1 / 29

REST, JSON and RSS with Windows Communication Foundation 3.5

REST, JSON and RSS with Windows Communication Foundation 3.5. Rob Windsor ObjectSharp Consulting rwindsor@objectsharp.com. Me.About. Visual Basic MVP Senior Consultant with ObjectSharp Consulting President of the Toronto Visual Basic User Group Member of the MSDN Canada Speakers Bureau

Download Presentation

REST, JSON and RSS with Windows Communication Foundation 3.5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. REST, JSON and RSS with Windows Communication Foundation 3.5 Rob Windsor ObjectSharp Consulting rwindsor@objectsharp.com

  2. Me.About • Visual Basic MVP • Senior Consultant with ObjectSharp Consulting • President of the Toronto Visual Basic User Group • Member of the MSDN Canada Speakers Bureau • Contact me via my blog • http://msmvps.com/windsor

  3. WCF Overview JSON Services HTTP Programming Model Syndication Agenda

  4. One-stop-shop for services Consistent object model First released with .NET Framework 3.0 Focus on the functionality, WCF takes care of the plumbing Windows Communication Foundation

  5. C C C B B B A A A The ABCs of WCF Client Service Message Address Binding Contract (Where) (How) (What)

  6. WCF Standard Bindings

  7. WCF Services

  8. WCF Overview JSON Services HTTP Programming Model Syndication Agenda

  9. JavaScript Object Notation Format for bridging JavaScript and objects Easier for browsers than XML ASP.NET AJAX & other AJAX toolkits use it Other web-aware clients also (Silverlight, etc.) What is JSON? var data = {“temp” : 59, “descr” : “cloudy”}; document.write (“The weather is “ + data.descr);

  10. WCF AJAX support in Visual Studio Script manager, VS Project Templates WCF automatically generates JS proxy Usage pattern similar to existing one: Add service to Script Manager control Write JavaScript code to work with proxy Configuration not required Via the WebScriptServiceHostFactory (.svc file) Works in ASP.NET Medium Trust! WCF / AJAX Integration

  11. JSON Services

  12. WCF Overview JSON Services HTTP Programming Model Syndication Agenda

  13. Embrace the URI Segments map to application logic HTTP GET is special GET is idempotent (View It) Multiple GETs to a URI should produce the same (or similar) results PUT / POST / DELETE do “stuff” (Do It) Content-type header is the data model Image, XML, JSON, etc. Web Concepts (REST)

  14. The Web, the URI, and Apps objectsharp.com/artists/Flaming+Hammer/HitMe objectsharp.com/artists/Northwind/Overdone objectsharp.com/artists/{artist}/{album} objectsharp.com/artists/Flaming+Hammer?album=HitMe objectsharp.com/artists/Northwind?album=Overdone objectsharp.com/astists/{artist}?album={album}

  15. System.UriTemplate Type for modeling URI to application semantics Can “bind” data to a template, output a URI Can “match” a URI to a template, retrieve data System.UriTemplateMatch Returned from UriTemplate “match” operations Can get relative paths and wildcard segments System.UriTemplateTable For “binding” a URI to a group of UriTemplates Modeling a URI in .NET 3.5

  16. Roundtrip Data in a URI Uri address = new Uri(“http://localhost:2000”); UriTemplate template = new UriTemplate(“{artist}/{album}”); Uri boundUri = template.BindByPosition(address, “Northwind”, “Overdone”); UriTemplateMatch match = template.Match(address, boundUri); String bandName = match.BoundVariables[“artist”];

  17. Simple URI-to-application mapping URIs in WCF Contracts [OperationContract] [WebGet(UriTemplate=“/Image/{artist}/{album}”)] Stream GetAlbumImage(String artist, String album); [OperationContract] [WebGet(UriTemplate=“/Image?name={artist})] Stream GetMainImage(String artist);

  18. All HTTP verbs are first class citizens GET, POST, PUT, etc. “View It” vs “Do It” separation mimics web HTTP Verbs in WCF Contracts [OperationContract] [WebGet(UriTemplate=“/Image/{bandName}/{album}”)] Stream GetAlbumImage(String bandName, String album); [OperationContract] [WebInvoke(METHOD=“PUT”)] // {PUT, POST, DELETE} void AddAlbum(AlbumInfoalbumInfo);

  19. HTTP headers can indicate Accepted data formats (Request) The format of the returned data (Response) Common header names: Accept (Request), Content-Type (Response) Small sampling of varieties: text/html, text/css, image/gif, image/jpeg, application/atom+xml, application/json, video/mp4 Data Formats and the Web

  20. WebOperationContext.Current provides access to incoming request headers Can also set outgoing response headers Some are shortcut for easier use Specifying Data Format in WCF Stream GetAlbumImage(String bandName, String album){ Stream stream; // get the image from somewhere WebOperationContext.Current.OutgoingResponse.ContentType = “image/jpeg”; return stream; }

  21. WebHttpBinding endpoint on a ServiceHost Add WebHttpBehavior to the endpoint UseWebServiceHost/Factory in most cases Web endpoints do not support WSDL Works in ASP.NET Medium Trust! Hosting / Binding

  22. View It and Do It

  23. Level-set JSON Services HTTP Programming Model Syndication Agenda

  24. Syndications are more than news and blogs Representation of any set of data Usually slowly changing Unified object model for RSS and Atom SyndicationFeed / SyndicationItem Feeds are service operations Consume as a service or as document Syndication Goals in .NET 3.5

  25. Single stop for syndications Create and Consume with or without WCF Easy to use object model Transport Agnostic Supports syndication extensions Format Agnostic RSS 2.0 & ATOM 1.0, others possible Works in ASP.NET Medium Trust! Syndication in .NET Fx 3.5

  26. Syndication Contracts in WCF [ServiceKnownType(typeof(Atom10FeedFormatter))] [ServiceKnownType(typeof(Rss20FeedFormatter))] [ServiceContract] interface IAlbumSyndication { [OperationContract] [WebGet(UriTemplate=“Images/{format}")] SyndicationFeedFormatter<SyndicationFeed> Feed(String format); }

  27. Syndication with PictureServices

  28. Simple HTTP service development SOAP and POX from the same contract JSON messaging capability Simple syndication – really! Web Centric Features in WCF 3.5 Built on WCF extensibility points from .NET 3.0

  29. Resources • Microsoft WCF Community Site • http://wcf.netfx3.com/ • PictureServices Samples • http://www.cloudsamples.net/pictureservices/ • The EndPoint on Channel 9 • http://channel9.msdn.com/shows/The_EndPoint • Justin Smith’s Blog • http://blogs.msdn.com/justinjsmith/ • Steve Maine’s Blog • http://hyperthink.net/blog/ • Getting Started with WCF • http://msdn2.microsoft.com/en-us/vbasic/bb736015.aspx

More Related