There was lots of news that came out of Microsoft’s recent Professional Developer Conference (PDC) event however one item that may have slipped under the radar of many is that the data format specification for WCF Data Services (previously known as ADO.Net Data Services aka Astoria) has been proposed as an open standard for data exchange across the web. Its name? The Open Data Protocol, or OData for short. From the OData website:
The Open Data Protocol (OData) is a web protocol for querying and updating data. OData applies web technologies such as HTTP, Atom Publishing Protocol (AtomPub) and JSON to provide access to information from a variety of applications, services, and stores.
You can read more at Open Data Protocol on MSDN.
[It should be noted that WCF Data Services and OData are not the same thing. My interpretation is that WCF Data Services is a technology that allows data to be surfaced as an OData-compliant service.]
Microsoft’s desire to get OData accepted as a universal data access protocol should not come as a surprise, I view OData as the next evolution in a journey that can count ODBC and OLE DB as significant milestones:
- According to wikipedia Microsoft created ODBC back in 1992 as a standard for accessing relational database management systems.
- OLE DB was the next evolution which provided a standard for accessing both relational and non-relational data sources in a uniform manner.
- Now we have OData which is an attempt to provide a uniform representation for any data that can be surfaced over that which is becoming the lowest common denominator for data exchange - HTTP.
I’ve been following the evolution of Astoria/ADO.Net Data Services/WCF Data Services for quite some time now, even back as far as when an influential team within Microsoft were probably going to reject AtomPub (according to Dare Obasanjo) and instead use their own proprietary alternative (according to Yaron Goland). Back in March 2008 I noted with interest an announcement by George Moore on the Live Services development blog that ADO.Net Data Services (as it was then known) would form an integral part of Microsoft’s stack of data access protocols and technologies across all data storage technologies:
The complete storage and developer tools stack revealed at MIX08 looks like this (described top to bottom). You are free to utilize this stack at any level of abstraction – there are no requirements to use all layers, and you are free to substitute your own developer tools against any layer
A Unified Standards-Based Protocols and Tooling Platform for Storage from Microsoft
21 months later and we are really starting to see the fruits of those labours come to bear. Sharepoint 2010 Lists, SQL Server Reporting Services 2008 R2, Excel 2010 (through Powerpivot), Project “Dallas” & Windows Azure are all either an OData producer or consumer and we are promised that there are more to come. Microsoft have received deserved criticism down the years for different teams building competing technologies yet here we witness a quiet unification around a common data access stack and that can only be a good thing. Do I sense the impact of Ray Ozzie here?
This has been a short commentary on the evolution of the OData protocol, any comments would be much appreciated.
Further reading (some of which are linked to above):