SlideShare una empresa de Scribd logo
1 de 22
Don Box and Steve Maine
URI Jockeys
Microsoft Corporation
Goals
 How do my programs use the web?
 How do my programs become part of the web?
 How do I do this efficiently and pragmatically?
Bits
 Stuff that's already shipped (lots)
 Stuff that will ship in Orcas (lots more)
 Stuff that will ship in TBD (a couple of things)
GET is More
It’s the URI, Stupid   Important Than   Formats Matter
                         You Think
The web pivots on URIs
 Easy to write down, share, and compare
 Hierarchy matches many information models
 Can be treated as opaque identifier (a la a GUID)
 Can be treated as a structured expression (a la S-Expr)
URI-space for a given service often infinite
 May also be state/data dependent
 Commonplace to use template syntax to specify quot;holesquot; in
 URI space (a la A9 and Joe Gregorio)
System.UriTemplate (quot;Orcasquot;) provides runtime support
for URI template syntax
UriTemplate.Bind fills in template holes with actual values
UriTemplate.Match extracts actuals from concrete URI
UriTemplateTable provides matching over multiple
candidate templates
 Most specific match wins
Uri baseAddress = new Uri( “http://localhost:81” );
string artist = quot;Led Zeppelinquot;;
string album = quot;Fourquot;;

UriTemplate template =
 new UriTemplate(“music/{artist}/{album}?format={format}quot; );

Uri boundUri = template.BindByPosition( baseAddress, artist, album, quot;rssquot; );

//boundUri:
// http://localhost:81/music/Led%20Zeppelin/Four?format=rss

UriTemplateMatch match = template.Match( baseAddress, boundUri );

Debug.Assert( match.BoundVariables[“artist”] == artist );
Debug.Assert( match.BoundVariables[“album”] == album );
Debug.Assert( match.BoundVariables[“format”] == “rss” );
Watch Steve Code…
GET   CHAOS
GET            CHAOS




POST         PUT   DELETE     OTHER
Degree of Resultant Apocalypse
                                                       Dogs/cats sleeping
                                                       together; mass hysteria

                                                       The Simpsons Movie

                                                       Lindsay Lohan

                                                       Rectal Itching


                                                       The Oprah Channel

                                                        Smooth Jazz
Turn off   Turn off PUT   Turn off POST Turn off GET
DELETE
[WebGet] (quot;orcasquot;) adds GET support to WCF service
operations
 Allows target URI space to be specified as URI template
 Templates parameters mapped to method parameters
 WebOperationContext provides easy access to web specifics
 (e.g., headers, status codes)
[WebInvoke] provides same for other HTTP methods
 POST is default method
[WebGet]/[WebInvoke] work great for quot;transparentquot; URI
with well-understood structure
 Ideal for server, OK (at best) for client
WebHttpClient (quot;experimentalquot;) is a more flexible client-
side programming model
 Supports both transparent and opaque URI
 Easier to use and more scalable than current WebClient API
Watch Steve Code…
Uniform operations are half the web quot;reachquot; proposition
Uniform formats for HTTP entity bodies are the other half
HTML was the ubiquitous format for projecting UX
Alas, multiple format(s) for exchanging data
 Original vision for quot;web dataquot; based on plain old XML (POX)
 JSON offers simpler format/data model
 RSS/ATOM constrain POX by adding list structure
 SOAP constraints POX by adding header processing model
WebGet/WebInvoke supports XML, JSON, or opaque
binary formats for request/response data
 SOAP and POX were in the box in V1 
SyndicationFeed/SyndicationItem provide rich
programming model for dealing with RSS/ATOM data
 Usable standalone or as WCF message content
 Integrates with serialization stacks for feed/item extensibility
Watch Steve Code…
Ships in “Orcas”
Already Shipped                      Speculative Bits

  System.Uri        UriTemplate       WebHttpClient
  WebClient          [WebGet]
    WPF           SyndicationFeed
    WCF            LINQ for XML
                  JSON Formatter
It’s the URI, Stupid              GET is More     Formats Matter
                                 Important Than
                                   You Think
                                                    SyndicationFeed


                                                     LINQ for XML


                   UriTemplate                      JSON Formatter


                                     [WebGet]
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,
                it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
                                       MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Más contenido relacionado

Destacado

Holt Park Easter 09 Swim
Holt Park Easter 09 SwimHolt Park Easter 09 Swim
Holt Park Easter 09 Swim
goodfriday
 
Presentación ordenador
Presentación ordenadorPresentación ordenador
Presentación ordenador
ninfa11
 

Destacado (19)

Microsoft Silverlight Media End-to-End
Microsoft Silverlight Media End-to-EndMicrosoft Silverlight Media End-to-End
Microsoft Silverlight Media End-to-End
 
High-Speed RIA Development with the Microsoft Silverlight Toolkit
High-Speed RIA Development with the Microsoft Silverlight ToolkitHigh-Speed RIA Development with the Microsoft Silverlight Toolkit
High-Speed RIA Development with the Microsoft Silverlight Toolkit
 
Using Dynamic Languages to Develop Microsoft Silverlight Applications
Using Dynamic Languages to Develop Microsoft Silverlight ApplicationsUsing Dynamic Languages to Develop Microsoft Silverlight Applications
Using Dynamic Languages to Develop Microsoft Silverlight Applications
 
Cloud Computing: What's in It for Me?
Cloud Computing: What's in It for Me?Cloud Computing: What's in It for Me?
Cloud Computing: What's in It for Me?
 
Caching REST with Windows Communication Foundation
Caching REST with Windows Communication FoundationCaching REST with Windows Communication Foundation
Caching REST with Windows Communication Foundation
 
Designing Next Generation User Interface Experiences with Microsoft Expressio...
Designing Next Generation User Interface Experiences with Microsoft Expressio...Designing Next Generation User Interface Experiences with Microsoft Expressio...
Designing Next Generation User Interface Experiences with Microsoft Expressio...
 
Interactive Advertising on the Windows Media Center Platform
Interactive Advertising on the Windows Media Center PlatformInteractive Advertising on the Windows Media Center Platform
Interactive Advertising on the Windows Media Center Platform
 
Holt Park Easter 09 Swim
Holt Park Easter 09 SwimHolt Park Easter 09 Swim
Holt Park Easter 09 Swim
 
Windows Mobile 6.5 Overview
Windows Mobile 6.5 OverviewWindows Mobile 6.5 Overview
Windows Mobile 6.5 Overview
 
A Lap around Microsoft .NET Services
A Lap around Microsoft .NET ServicesA Lap around Microsoft .NET Services
A Lap around Microsoft .NET Services
 
Designing with Microsoft Expression Web: Today and Tomorrow
Designing with Microsoft Expression Web: Today and TomorrowDesigning with Microsoft Expression Web: Today and Tomorrow
Designing with Microsoft Expression Web: Today and Tomorrow
 
Presentación ordenador
Presentación ordenadorPresentación ordenador
Presentación ordenador
 
Extrait de mvett exil de mekui mengômô ondo illustré ce2 b 2015 2016
Extrait de mvett exil de mekui mengômô ondo illustré ce2 b 2015 2016Extrait de mvett exil de mekui mengômô ondo illustré ce2 b 2015 2016
Extrait de mvett exil de mekui mengômô ondo illustré ce2 b 2015 2016
 
Massimiliano Fronti_CV Minsize
Massimiliano Fronti_CV  MinsizeMassimiliano Fronti_CV  Minsize
Massimiliano Fronti_CV Minsize
 
Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016
 
Cv large print 3
Cv large print 3Cv large print 3
Cv large print 3
 
Zen Quotes
Zen QuotesZen Quotes
Zen Quotes
 
Lei nº 11.795, de 8 de outubro de 2008 sistema de consórcios
Lei nº 11.795, de  8 de outubro de 2008   sistema de consórciosLei nº 11.795, de  8 de outubro de 2008   sistema de consórcios
Lei nº 11.795, de 8 de outubro de 2008 sistema de consórcios
 
Кислякова Елизавета
Кислякова ЕлизаветаКислякова Елизавета
Кислякова Елизавета
 

Similar a Navigating the Programmable Web

Building+restful+webservice
Building+restful+webserviceBuilding+restful+webservice
Building+restful+webservice
lonegunman
 
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
David Delabassee
 
WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008
WSO2
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
deimos
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
b_kathir
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable Web
Timothy Perrett
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2
 

Similar a Navigating the Programmable Web (20)

REST, JSON and RSS with WCF 3.5
REST, JSON and RSS with WCF 3.5REST, JSON and RSS with WCF 3.5
REST, JSON and RSS with WCF 3.5
 
Easing ASP.NET Web and SQL Server Database Deployment with VS 2010 and MsDeploy
Easing ASP.NET Web and  SQL Server Database Deployment withVS 2010 and MsDeployEasing ASP.NET Web and  SQL Server Database Deployment withVS 2010 and MsDeploy
Easing ASP.NET Web and SQL Server Database Deployment with VS 2010 and MsDeploy
 
Building+restful+webservice
Building+restful+webserviceBuilding+restful+webservice
Building+restful+webservice
 
RESTful Data Services with the ADO.NET Data Services Framework
RESTful Data Services with the ADO.NET Data Services FrameworkRESTful Data Services with the ADO.NET Data Services Framework
RESTful Data Services with the ADO.NET Data Services Framework
 
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)Java EE 7 (Lyon JUG & Alpes JUG  - March 2014)
Java EE 7 (Lyon JUG & Alpes JUG - March 2014)
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)
 
WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008WSF PHP 2 Webinar Sep 2008
WSF PHP 2 Webinar Sep 2008
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
 
Building RESTful Services with WCF 4.0
Building RESTful Services with WCF 4.0Building RESTful Services with WCF 4.0
Building RESTful Services with WCF 4.0
 
Building RESTful Applications with OData
Building RESTful Applications with ODataBuilding RESTful Applications with OData
Building RESTful Applications with OData
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable Web
 
Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)
 
Avatar 2.0
Avatar 2.0Avatar 2.0
Avatar 2.0
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
 
Producing an OData feed in 10 minutes
Producing an OData feed in 10 minutesProducing an OData feed in 10 minutes
Producing an OData feed in 10 minutes
 
.Net3.5 Overview
.Net3.5 Overview.Net3.5 Overview
.Net3.5 Overview
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
 
WSO2 AppDev platform
WSO2 AppDev platformWSO2 AppDev platform
WSO2 AppDev platform
 
JAX-RS.next
JAX-RS.nextJAX-RS.next
JAX-RS.next
 

Más de goodfriday

Narine Presentations 20051021 134052
Narine Presentations 20051021 134052Narine Presentations 20051021 134052
Narine Presentations 20051021 134052
goodfriday
 
09 03 22 easter
09 03 22 easter09 03 22 easter
09 03 22 easter
goodfriday
 
Holy Week Easter 2009
Holy Week Easter 2009Holy Week Easter 2009
Holy Week Easter 2009
goodfriday
 
Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092
goodfriday
 
Eastercard2009
Eastercard2009Eastercard2009
Eastercard2009
goodfriday
 
Easterservices2009
Easterservices2009Easterservices2009
Easterservices2009
goodfriday
 
Bulletin Current
Bulletin CurrentBulletin Current
Bulletin Current
goodfriday
 
March 2009 Newsletter
March 2009 NewsletterMarch 2009 Newsletter
March 2009 Newsletter
goodfriday
 
Lent Easter 2009
Lent Easter 2009Lent Easter 2009
Lent Easter 2009
goodfriday
 
Easterpowersports09
Easterpowersports09Easterpowersports09
Easterpowersports09
goodfriday
 
Easter Trading 09
Easter Trading 09Easter Trading 09
Easter Trading 09
goodfriday
 
Easter Brochure 2009
Easter Brochure 2009Easter Brochure 2009
Easter Brochure 2009
goodfriday
 
March April 2009 Calendar
March April 2009 CalendarMarch April 2009 Calendar
March April 2009 Calendar
goodfriday
 
Easter 2009 Advertising
Easter 2009 AdvertisingEaster 2009 Advertising
Easter 2009 Advertising
goodfriday
 

Más de goodfriday (20)

Narine Presentations 20051021 134052
Narine Presentations 20051021 134052Narine Presentations 20051021 134052
Narine Presentations 20051021 134052
 
Triunemar05
Triunemar05Triunemar05
Triunemar05
 
09 03 22 easter
09 03 22 easter09 03 22 easter
09 03 22 easter
 
Holy Week Easter 2009
Holy Week Easter 2009Holy Week Easter 2009
Holy Week Easter 2009
 
Easter Letter
Easter LetterEaster Letter
Easter Letter
 
April2009
April2009April2009
April2009
 
Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092
 
Eastercard2009
Eastercard2009Eastercard2009
Eastercard2009
 
Easterservices2009
Easterservices2009Easterservices2009
Easterservices2009
 
Bulletin Current
Bulletin CurrentBulletin Current
Bulletin Current
 
Easter2009
Easter2009Easter2009
Easter2009
 
Bulletin
BulletinBulletin
Bulletin
 
March 2009 Newsletter
March 2009 NewsletterMarch 2009 Newsletter
March 2009 Newsletter
 
Mar 29 2009
Mar 29 2009Mar 29 2009
Mar 29 2009
 
Lent Easter 2009
Lent Easter 2009Lent Easter 2009
Lent Easter 2009
 
Easterpowersports09
Easterpowersports09Easterpowersports09
Easterpowersports09
 
Easter Trading 09
Easter Trading 09Easter Trading 09
Easter Trading 09
 
Easter Brochure 2009
Easter Brochure 2009Easter Brochure 2009
Easter Brochure 2009
 
March April 2009 Calendar
March April 2009 CalendarMarch April 2009 Calendar
March April 2009 Calendar
 
Easter 2009 Advertising
Easter 2009 AdvertisingEaster 2009 Advertising
Easter 2009 Advertising
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Navigating the Programmable Web

  • 1.
  • 2. Don Box and Steve Maine URI Jockeys Microsoft Corporation
  • 3. Goals How do my programs use the web? How do my programs become part of the web? How do I do this efficiently and pragmatically? Bits Stuff that's already shipped (lots) Stuff that will ship in Orcas (lots more) Stuff that will ship in TBD (a couple of things)
  • 4. GET is More It’s the URI, Stupid Important Than Formats Matter You Think
  • 5. The web pivots on URIs Easy to write down, share, and compare Hierarchy matches many information models Can be treated as opaque identifier (a la a GUID) Can be treated as a structured expression (a la S-Expr) URI-space for a given service often infinite May also be state/data dependent Commonplace to use template syntax to specify quot;holesquot; in URI space (a la A9 and Joe Gregorio)
  • 6. System.UriTemplate (quot;Orcasquot;) provides runtime support for URI template syntax UriTemplate.Bind fills in template holes with actual values UriTemplate.Match extracts actuals from concrete URI UriTemplateTable provides matching over multiple candidate templates Most specific match wins
  • 7. Uri baseAddress = new Uri( “http://localhost:81” ); string artist = quot;Led Zeppelinquot;; string album = quot;Fourquot;; UriTemplate template = new UriTemplate(“music/{artist}/{album}?format={format}quot; ); Uri boundUri = template.BindByPosition( baseAddress, artist, album, quot;rssquot; ); //boundUri: // http://localhost:81/music/Led%20Zeppelin/Four?format=rss UriTemplateMatch match = template.Match( baseAddress, boundUri ); Debug.Assert( match.BoundVariables[“artist”] == artist ); Debug.Assert( match.BoundVariables[“album”] == album ); Debug.Assert( match.BoundVariables[“format”] == “rss” );
  • 9. GET CHAOS
  • 10. GET CHAOS POST PUT DELETE OTHER
  • 11. Degree of Resultant Apocalypse Dogs/cats sleeping together; mass hysteria The Simpsons Movie Lindsay Lohan Rectal Itching The Oprah Channel Smooth Jazz Turn off Turn off PUT Turn off POST Turn off GET DELETE
  • 12. [WebGet] (quot;orcasquot;) adds GET support to WCF service operations Allows target URI space to be specified as URI template Templates parameters mapped to method parameters WebOperationContext provides easy access to web specifics (e.g., headers, status codes) [WebInvoke] provides same for other HTTP methods POST is default method
  • 13. [WebGet]/[WebInvoke] work great for quot;transparentquot; URI with well-understood structure Ideal for server, OK (at best) for client WebHttpClient (quot;experimentalquot;) is a more flexible client- side programming model Supports both transparent and opaque URI Easier to use and more scalable than current WebClient API
  • 15. Uniform operations are half the web quot;reachquot; proposition Uniform formats for HTTP entity bodies are the other half HTML was the ubiquitous format for projecting UX Alas, multiple format(s) for exchanging data Original vision for quot;web dataquot; based on plain old XML (POX) JSON offers simpler format/data model RSS/ATOM constrain POX by adding list structure SOAP constraints POX by adding header processing model
  • 16. WebGet/WebInvoke supports XML, JSON, or opaque binary formats for request/response data SOAP and POX were in the box in V1  SyndicationFeed/SyndicationItem provide rich programming model for dealing with RSS/ATOM data Usable standalone or as WCF message content Integrates with serialization stacks for feed/item extensibility
  • 18. Ships in “Orcas” Already Shipped Speculative Bits System.Uri UriTemplate WebHttpClient WebClient [WebGet] WPF SyndicationFeed WCF LINQ for XML JSON Formatter
  • 19. It’s the URI, Stupid GET is More Formats Matter Important Than You Think SyndicationFeed LINQ for XML UriTemplate JSON Formatter [WebGet]
  • 20.
  • 21.
  • 22. © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.