Your SlideShare is downloading. ×
  • Like
Gaining the Knowledge of the Open Data Protocol (OData)
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Gaining the Knowledge of the Open Data Protocol (OData)


The Open Data Protocol (OData) is an open protocol for sharing data. It provides a way to break down data silos and increase the shared value of data by creating an ecosystem in which data consumers …

The Open Data Protocol (OData) is an open protocol for sharing data. It provides a way to break down data silos and increase the shared value of data by creating an ecosystem in which data consumers can interoperate with data producers in a way that is far more powerful than currently possible, enabling more applications to make sense of a broader set of data. Every producer and consumer of data that participates in this ecosystem increases its overall value. OData is consistent with the way the Web works – it makes a deep commitment to URIs for resource identification and commits to an HTTP-based, uniform interface for interacting with those resources (just like the Web). This commitment to core Web principles allows OData to enable a new level of data integration and interoperability across a broad range of clients, servers, services, and tools.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Gaining the Knowledge of the Open Data Protocol (OData) Chris Woodruff Director, Perficient Level: Intermediate
  • 2. Who I am? Chris Woodruff MVP, Visual C# Director at Perficient Co-host of Deep Fried Bytes Podcast @cwoodruff / / Skype: cwoodruff
  • 3. You will learn: • Understand the background of OData • Have an understanding of the OData protocol • How to produce an OData feed using WCF Data Services • How to produce an OData feed using ASP.NET Web API • How to consume an OData feed using LINQ
  • 4. Knowledge of OData BACKGROUND
  • 5. Quote Jim Gray Today, the tools for capturing data both at the mega-scale and at the milli-scale are just dreadful. After you have captured the data, you need to curate it before you can start doing any kind of data analysis, and we lack good tools for both data curation and data analysis.
  • 6. Problem: Data APIs frequently create more problems than solutions THIS TALK IS ABOUT ONE SOLUTION.
  • 7. Survey …knows what the web is …are comfortable w/ HTTP and XML? JSON? …have a basic understanding of the term REST …have created a Data API
  • 8. Is there really a problem? What is it? QUIZ TIME
  • 9. Facebook: What fields will I get when I read a post?
  • 10. Facebook: How do you like a post?
  • 11. SO GIVEN THAT NOBODY KNEW THE ANSWERS TO THESE QUESTIONS, How do developers know what to do?
  • 12. I guess they use docs
  • 13. So is there really a problem? Yes DEVELOPERS DON’T HAVE TIME TO ACTUALLY READ THE DOCS
  • 14. Can OData Magically cure the problem? No, but it can help. LET’S SEE HOW
  • 15. Knowledge of OData THE PROTOCOL
  • 16. The Basics of OData Feeds, which are Collections of typed Entities OData services can expose Actions and Functions (v4), Services (v3) OData services expose all these constructs via URIs OData service may also expose a Service Metadata Document
  • 17. Full SQL like Query “Language” HTTP Command (Verb) GET SQL Command SELECT PUT UPDATE POST INSERT DELETE DELETE
  • 18. The $metadata endpoint
  • 19. URL Conventions _______________________________________/ | service root URI$top=2&$orderby=name _______________________________________/ __________________/ _________________/ | | | service root URI resource path query options
  • 20. URL Conventions $filter /Suppliers?$filter=Address/City eq 'Redmond‘ $orderby /Products?$orderby=ReleaseDate asc, Rating desc $top and $skip /Products?$top=5&$skip=2 $select and $expand /Products?$select=*,Category/Name&$expand=Category
  • 21. Combining UEL Conventions • http://.../Players/ –?$skip=10 –&$top=2 –&filter=substringof(‘Wood',nameLast) –&$orderby=nameLast%20desc –&$select=nickname,yearBorn,nameFirst –&$format=json
  • 22. Payload Conventions • Success and error Codes – 200 OK, 201 Created, 415 Unsupported Media Type, etc • Overall Format – JSON – AtomPub – JSON Verbose • Nuances – PATCH, Null payloads, etc
  • 23. JSON Format • • • • Friendly to Javascript 90% more compact than AtomPub Reads like a custom API Very little OData “gunk”
  • 24. Atom Format • • • Atom parsers exist in many frameworks Element fields can be mapped to their Atom counterparts A good example of OData interoperability
  • 25. What else can you do with OData? • • • Actions and Functions allow hypermediabased method calls (non-CRUD operations) Defined conventions for PATCH and deep insert Vocabularies
  • 26. OData isn’t always the best fit • • • OData may not be a good fit for highly opinionated APIs laden with developer intent OData may not be a good fit for bulk data transfer OData may not be a good fit for the APIs that dramatically different in shape than the backend
  • 27. OData does not support all queries • OData doesn’t currently support aggregation – You can’t ask for customers that have at least 2 orders • OData doesn’t currently support filters expansions – You can’t ask for a customer and only their orders placed in 2013 • OData doesn't support “graph” queries – You can ask friend-of-a-friend type queries, but there are limitations
  • 28. OData is becoming a standard • • OASIS, ISO ETA early 2014
  • 29. Who uses OData?
  • 30. What does OData give me and my organization? Empower Internal Power Users Empower Existing and Future Customers Monetize Data for untapped Revenue
  • 33. Knowledge of OData CREATING FEED W/ ASP.NET WEB API
  • 35. OData Best Practices (Producer) • • Always design your OData feed will server-side paging if your entity collections hold large amounts of data. Looks at server-side validation of queries and data updates based on the user credentials sent through HTTP
  • 36. Knowledge of OData CONSUMING ODATA
  • 37. What if Data API’s were like… LINQ? • What are the last 50 invoices we sent? – context.Invoice.OrderByDescending(i=>i.PostedAt).Take(50); • What are the invoices from the last 24 hours? – context.Invoice.Where(i=>i.PostedAt > DateTime.Now.AddDays(-1)); • How many $1M invoices have we sent? – context.Invoice.Where(i=>i.TotalAmount >= 1000000);
  • 39. OData Best Practices (Consumer) • • • Use Query Projection to only bring back the entity properties you or your app needs. Think about client-side paging even if their exists server-side paging. Design and implement a client-side data caching function in your app (unless sensitive data).
  • 40. Why are we excited!!
  • 41. Knowledge of OData WRAP-UP
  • 42. The demo projects can be found at:
  • 43. Resources REST 2002-REST-TOIT.pdf OData
  • 44. Contact Me Chris “Woody” Woodruff Twitter @cwoodruff Skype cwoodruff