SlideShare a Scribd company logo
culture > strategy
Putting Kit back in SDK
One Microsoft
Becoming One Microsoft isn’t the beginning, nor is
it the end. It’s something we should be moving
toward every single day.
Microsoft Graph
Gateway to your data in the Microsoft-cloud
Users, Groups, Organizations
Outlook
SharePoint
OneDrive
Teams
Planner
Excel
OneNote
Activities
Device Relay
Commands
Notifications
Azure AD
Intune
Identity Manager
Advanced Threat Analytics
Advanced Threat Protection
Mail, Calendar,
Contacts and Tasks
Sites and Lists
Drives and Files
Channels, Messages
Tasks and Plans
Spreadsheets
Notes, and more…
Identity Management
Access Control
Synchronization
Domains
Administrative Units
Applications and Devices
Advanced Threat Analytics
Advanced Threat Protection
Alerts
Policies
and more…
Office 365 Windows 10 Enterprise Mobility + Security
https://graph.microsoft.com
Dynamics 365
Let’s code!
Putting Kit back in SDK
@Darrel_Miller
How do you
feel about
SDKs for APIs?
This Photo by Unknown Author is licensed under CC BY-SA-NC
Do they make
you feel like this?
This Photo by Unknown Author is licensed under CC BY-NC-ND
TTFC
This Photo by Unknown Author is licensed under CC BY-SA
Made by a machine
This Photo by Unknown Author is licensed under CC BY-SA
This is what
we need
Kit Components
Client
Factory
Request
Builder
Response
Handler
HTTP
Interface
Request Response
Middleware
HTTP
Handler
Service
Client
Core Library
Native Library
API Models
Common
Content
Generated Library
Tasks
Workflow
Support for scenarios
where a coordinated set
of HTTP requests achieve
a common goal
Services types for
simplified payload
handling
Handling standard
response codes and
deserialization of payloads
Components for
applying cross
cutting concerns
Common container
models for collections,
paging, batch, Multi-part
Provide discovery
mechanism for
resources and
parameters
Provide simple,
language native,
interface for
common use cases
Create native client library
with desired configuration
and middleware
Middleware magic
This Photo by Unknown Author is licensed under CC BY
Http
Client
Service
Auth
Handle
r
Request
Application
Respons
e
Retry
Handler
Redirect
Handler
Caching
Handler …
OAuth
Provider
StorageProvid
er
Reques
t
Context
User
Middleware
Controls Request Queue
Request vs
Content
This Photo by Unknown Author is licensed under CC BY-NC-ND
Http
Client
Fluent
Request
Builder
Status
Monitor
Content
Webhook
Content
Request
Respon
se
Template
d
Request
Builder
Domain
Types
Body
Multipart
Content
Entity
Content
Collection
Content
. . .
GraphQL
Request
Content
GraphQL
Response
Content
Subscribe
Content
Content is
composable
This Photo by Unknown Author is licensed under CC BY
Signed/Encrypted
Content
Signed/Encrypted
Content
Compressed
Content
Multipart
Content
Streaming
Content
Collection
Content
Content
Headers
Trailer
Headers
Tasks – Higher
order
functions
This Photo by Unknown Author is licensed under CC BY-NC-ND
SomeTask
Current
State
Http Client API
Request
Respons
e
Input
Parameters
State
Change
Event
Action
PageIterator Task
let somePagedCollection: PageCollection = await client.api("/me/messages").get();
let callback: PageIteratorCallback = (data) => {
console.log(data);
return true;
};
let pageIterator = new PageIterator(client, somePagedCollection, callback);
pageIterator.iterate();
Response Handler
This Photo by Unknown Author is licensed under CC BY-NC
Response Machine
Applicatio
n State
DispatcherAPI Respons
e
Response
Callback
Response
Callback
Response
CallbackResponse
Callback
Status, Content-
Type, Link Relation
• Generated code is only a small part of SDKs
• SDKs can and should add value all
developers
• Don’t throw away the HTTP model
This Photo by Unknown Author is licensed under CC BY-NC-ND

More Related Content

PPTX
Microsoft Graph community call-December 2018
Microsoft 365 Developer
 
PPTX
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB
 
PDF
Bringing Decentralization to Collaboration
Samer Hassan
 
PPT
What is hibernate?
kanchanmahajan23
 
PDF
Dependency Visualization with WSO2 Governance Registry 5.2
WSO2
 
DOCX
Kiran_Patil_JavaDeveloper
KIRAN PATIL
 
PPT
Hibernate training-topics
Vibrant Technologies & Computers
 
PPT
The LEAD Portal: An OGCE based weather science gateway
marcuschristie
 
Microsoft Graph community call-December 2018
Microsoft 365 Developer
 
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB
 
Bringing Decentralization to Collaboration
Samer Hassan
 
What is hibernate?
kanchanmahajan23
 
Dependency Visualization with WSO2 Governance Registry 5.2
WSO2
 
Kiran_Patil_JavaDeveloper
KIRAN PATIL
 
Hibernate training-topics
Vibrant Technologies & Computers
 
The LEAD Portal: An OGCE based weather science gateway
marcuschristie
 

What's hot (18)

PPTX
Azure AD for browser-based application developers
Bob German
 
PPT
Low Hanging Fruits In J EE Performance
Alois Reitbauer
 
PPTX
Real World API Design Using The Entity Framework Services
David McCarter
 
PDF
Understanding AngularJS HTML5 DataServices
Thomas Burleson
 
PDF
Representational State Transfer (REST)
David Krmpotic
 
PDF
OWASP Top 10 List Overview for Web Developers
Benjamin Floyd
 
PPTX
Event Streaming Architecture - Deep Dive
Karthikeyan VK
 
PPTX
Perchè un programmatore ama anche i database NoSQL
Marco Parenzan
 
PPTX
Ukfs Snr Dev Arch Forum Pres1 Jb
AllyWick
 
PPTX
Access Control for Linked Data: Past, Present and Future
Sabrina Kirrane
 
DOC
Suman
arunkumar2389
 
PPTX
Accessing data within VB Applications
robertbenard
 
PPTX
Ukfs Snr Dev Arch Forum Pres2 St
AllyWick
 
PPTX
Ukfs Snr Dev Arch Forum Pres3 Re
AllyWick
 
PPTX
Building N Tier Applications With Entity Framework Services 2010
David McCarter
 
PDF
Building serverless applications with Microsoft Graph and Azure Functions - S...
Dragan Panjkov
 
Azure AD for browser-based application developers
Bob German
 
Low Hanging Fruits In J EE Performance
Alois Reitbauer
 
Real World API Design Using The Entity Framework Services
David McCarter
 
Understanding AngularJS HTML5 DataServices
Thomas Burleson
 
Representational State Transfer (REST)
David Krmpotic
 
OWASP Top 10 List Overview for Web Developers
Benjamin Floyd
 
Event Streaming Architecture - Deep Dive
Karthikeyan VK
 
Perchè un programmatore ama anche i database NoSQL
Marco Parenzan
 
Ukfs Snr Dev Arch Forum Pres1 Jb
AllyWick
 
Access Control for Linked Data: Past, Present and Future
Sabrina Kirrane
 
Accessing data within VB Applications
robertbenard
 
Ukfs Snr Dev Arch Forum Pres2 St
AllyWick
 
Ukfs Snr Dev Arch Forum Pres3 Re
AllyWick
 
Building N Tier Applications With Entity Framework Services 2010
David McCarter
 
Building serverless applications with Microsoft Graph and Azure Functions - S...
Dragan Panjkov
 
Ad

Similar to Putting Kit back in SDK (20)

PDF
Grand tour of Azure API Management.pdf
Sherman37
 
PDF
Made for Mobile - Let Office 365 Power Your Mobile Apps
SPC Adriatics
 
PDF
A Snapshot of API Design Trends In 2019
Bill Doerrfeld
 
PDF
Create cross-platform apps that interact with Microsoft Graph and Office 365 ...
Codemotion
 
PPTX
Building SharePoint Online applications using Napa Office 365 Development Tools
Gunnar Peipman
 
PPTX
Microsoft Graph: Connect to essential data every app needs
Microsoft Tech Community
 
PPTX
Microsoft Graph: Connect to essential data every app needs
Microsoft Tech Community
 
PDF
Xamarin microsoft graph
Nicolò Carandini
 
PDF
API Sandbox: Empowering Developer Experience (DX)
Faisal Banaeamah
 
PPT
Six Steps To Build A Successful API
Chris Haddad
 
PPT
Six Steps to Build Successful APIs
WSO2
 
PDF
[Workshop] Digital Transformation: Breaking Down Boundaries for Greater Conne...
WSO2
 
PDF
apidays LIVE Jakarta - API Sandbox: empowering Developer Experience (DX) by F...
apidays
 
PDF
INTERFACE by apidays 2023 - Refining Your API: The Last Mile of API Design, J...
apidays
 
PPTX
Microsoft Graph: The API for Microsoft 365
Mayur Tendulkar
 
PDF
Rest ful tools for lazy experts
ColdFusionConference
 
PDF
RESTFul Tools For Lazy Experts - CFSummit 2016
Ortus Solutions, Corp
 
PPTX
An introduction to Microsoft Graph for developers
Microsoft 365 Developer
 
PDF
EVERYTHING AS CODE: API-GATEWAY, DEVELOPER PORTAL UND GRAPHQL
juliebardinjimenez1
 
PDF
The Composable Enterprise | Yenlo - WSO2 Integration Summit 2019, San Francisco
Yenlo
 
Grand tour of Azure API Management.pdf
Sherman37
 
Made for Mobile - Let Office 365 Power Your Mobile Apps
SPC Adriatics
 
A Snapshot of API Design Trends In 2019
Bill Doerrfeld
 
Create cross-platform apps that interact with Microsoft Graph and Office 365 ...
Codemotion
 
Building SharePoint Online applications using Napa Office 365 Development Tools
Gunnar Peipman
 
Microsoft Graph: Connect to essential data every app needs
Microsoft Tech Community
 
Microsoft Graph: Connect to essential data every app needs
Microsoft Tech Community
 
Xamarin microsoft graph
Nicolò Carandini
 
API Sandbox: Empowering Developer Experience (DX)
Faisal Banaeamah
 
Six Steps To Build A Successful API
Chris Haddad
 
Six Steps to Build Successful APIs
WSO2
 
[Workshop] Digital Transformation: Breaking Down Boundaries for Greater Conne...
WSO2
 
apidays LIVE Jakarta - API Sandbox: empowering Developer Experience (DX) by F...
apidays
 
INTERFACE by apidays 2023 - Refining Your API: The Last Mile of API Design, J...
apidays
 
Microsoft Graph: The API for Microsoft 365
Mayur Tendulkar
 
Rest ful tools for lazy experts
ColdFusionConference
 
RESTFul Tools For Lazy Experts - CFSummit 2016
Ortus Solutions, Corp
 
An introduction to Microsoft Graph for developers
Microsoft 365 Developer
 
EVERYTHING AS CODE: API-GATEWAY, DEVELOPER PORTAL UND GRAPHQL
juliebardinjimenez1
 
The Composable Enterprise | Yenlo - WSO2 Integration Summit 2019, San Francisco
Yenlo
 
Ad

More from darrelmiller71 (6)

PPTX
Consuming REST APIs for all interpretations of REST
darrelmiller71
 
PPTX
Hypermedia Driven Reuse
darrelmiller71
 
PPTX
Prairie DevCon 2015 - Crafting Evolvable API Responses
darrelmiller71
 
PPTX
Lies you have been told about REST
darrelmiller71
 
PPTX
Hypermedia As The Evader Of App Stores
darrelmiller71
 
PPTX
Crafting Evolvable Api Responses
darrelmiller71
 
Consuming REST APIs for all interpretations of REST
darrelmiller71
 
Hypermedia Driven Reuse
darrelmiller71
 
Prairie DevCon 2015 - Crafting Evolvable API Responses
darrelmiller71
 
Lies you have been told about REST
darrelmiller71
 
Hypermedia As The Evader Of App Stores
darrelmiller71
 
Crafting Evolvable Api Responses
darrelmiller71
 

Recently uploaded (20)

PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
The Future of Artificial Intelligence (AI)
Mukul
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 

Putting Kit back in SDK

Editor's Notes

  • #2: Vincent provide great overview of possibilities Before we get into some technical details Let’s talk about a softer side of Microsoft Graph for a minute I think It’s important.
  • #3: Who remembers this cartoon from Manu Cornet Various major companies were compared from an organization or cultural perspective Having Microsoft operate as many competing smaller orgs obviously worked for many years But for a variety of reasons it wasn’t working any more. When Satya Nadella became CEO, he started a major cultural shift.
  • #4: “One Microsoft” was one of those completely new cultural goals. Microsoft’s employees are rewarded for cooperating with other teams. I was Microsoft partner and ISV for many years and it drove me nuts the mixed messages I would get from different teams. One Microsoft is giving the ability to teams to speak with a consistent message. Which brings us to Microsoft Graph
  • #5: Let’s take a look at this familiar slide but from a different perspective Rajesh E&D Windows/UST BAG/James Phillips Azure AD (owners of Graph proxy and part of DevX) Brad Anderson C+E Security Not only are the core Graph team split across divisions, but all of the major groups in the company are represented. Microsoft Graph is an actual realization of One Microsoft. This is not a product from a product group. This is the Microsoft Graph.
  • #7: My name is Darrel Miller Here’s my twitter handle I work for Microsoft as a Product Manager on the Microsoft Graph developer experience. Today I am going to talk about SDKs, or client libraries for HTTP APIs.
  • #8: People either love them or hate them Even API providers who hate them, know that they need to build them. Because some customers demand them. I’ve never liked them. I’ve spent years trying figure out how to build them in a way I would like them. When I got the chance at Microsoft to make SDKs the way I think they should be done, I jumped at it.
  • #9: This is how some people feel about SDKs They feel limited. Constrained. There’s no flexibility, Because they are designed primarily for a single use case
  • #10: TTFC Getting people started is essential Showing how simple and easy it is to get stuff done is critical. Designing for flexibility brings complexity so it is avoided. And then there is the other challenge with SDKs. Multiple languages mean code-generation.
  • #11: Code generation is a double edged sword It can make somethings easy, but it also makes it easy to make poorly architected code. Supporting cross platform often means only supporting the lowest common denominator features There are SDK code generators out there, and some folks assume creating SDKs is minimal effort task. But the end result is often poor, with limited flexibility. It’s often “use it all” or use “none of it”, which is why many people choose not to use them.
  • #12: What we need is a real kit. So we can pick and choose the parts we want to use. The new users can get the fully streamlined, easy approach. The folks building products can get under the covers and use just the parts they want. The parts they don’t want to have to build themselves. Users need to have choices. What we are going to look at next the approach we are taking on the Microsoft Graph team to make our SDKs better for all
  • #16: Request and content can be independent Request is packaging The content could be anything
  • #17: Decoupling Request from Content Current implementations make it difficult to deal with common graph contents independently of the requests This makes reuse harder.
  • #19: 27mins An extra comment about this notion of HTTP content. This was not our creation. This follows the pattern designed by Henrik Frystk Neilsen, an author of the HTTP/1.1 specification who was an architect on the HTTP Client library for .NET framework This model allows content objects to be composable. It enables Content objects to contribute headers to request/response And maybe even one day provide Trailer headers. 30mins
  • #20: Cruise control lets you set the speed and pressing the accelerator and brake is done for you. Support for scenarios where a coordinated set of HTTP requests achieve a well known goal.
  • #21: 33mins 35mins
  • #22: 37mins Return false stops the iteration. Resume iteration. Transform PageSize helpers? 39mins
  • #23: Response code is often inline However, in reality for HTTP calls they are callbacks Even though they may look like they are inline ResponseHandler is about centralizing those callbacks into a response machine.
  • #24: 33mins Support for scenarios where a coordinated set of HTTP requests achieve a well known goal. 35mins