Microsoft has released OData SDK for .NET, Java, PHP, Objective-C (iPhone and Mac) and JavaScript, helping developers to create clients that consume OData-based information, and Codename “Dallas” CTP 2, a marketplace for selling and buying such data.
OData is an AtomPub-based protocol facilitating data sharing over the web through REST-like requests sent by a consumer to a data producer – an OData service point. OData adds the following features to AtomPub:
- A convention for representing structured data
- A resource addressing scheme and URL syntax
- A set of common query options (filter, sort, etc.)
- Schema describing resource structure, links and metadata
- Payload formats and semantics for batch and “unit of work” requests
- Alternate representations of resource content (JSON)
A data request may contain the following components:
An example of such a query:
Using the REST convention, each resource has attributed an URI, but a data request may contain some query options that could be used as data filters for example, making the server to perform some activity on client’s behalf:
The OData Developer pages contain detailed information on creating and using OData services, an example of such a service has been implemented by Netflix.
Microsoft has announced the release of OData SDK - a number of development tools for creating OData clients - under the Apache license and containing the following:
- Sample OData online services (northwind, etc) - open a browser and test out an OData Service.
- OData client libraries
- Windows Phone 7 series
- iPhone
- AJAX\Javascript
- PHP
- Java
- .NET
- Silverlight
- Online OData explorer (Source code also available for download from odata.org)
- Data Service Provider toolkit: Whitepaper and sample WCF Data Services provider implementation to demonstrate how to create a data service over *any* data source
- OData validation tool: A test harness and a few sample validation tests to make it easy to validate your OData endpoint. The harness is designed to be easily extended allowing anyone to easily add new tests.
Practically, the following languages are covered to create OData clients: .NET, Java, PHP, Objective-C (iPhone and Mac) and JavaScript. But for a true adoption of the protocol, beside having OData licensed as Open Specification Promise and an SDK, Miguel de Icaza, initiator of the Mono project, considers Microsoft should open source a reference OData provider implementation:
I believe that if Microsoft wants to bootstrap the OData universe they need to seed this space not only with some existing services but also with an open source OData server implementation for Unix.
I should further add that they should not wait a single minute and open their server-side .NET implementation if they want to accelerate the OData adoption. …
Although the client libraries are great step to drive the adoption of the protocol for clients, it will do very little to unlock the data that sits today out in the web behind Linux servers running PHP, Java, Ruby or Python-based applications.
At the end of the day, the client side code is a relatively simple parser for an XML file format. The server side on the other hand is much more complicated to get right.
The server side requires a complete implementation of the query syntax, selection as well as access control and transaction support required to expose the data safely. …
If Microsoft were to open source their server side implementation of OData, we could overnight allow Linux users to expose their data in a format that can be mined. Linux users would only need to run a Mono front-end to the System.Data.Services library to expose the data that currently lives in their servers and is being served by Joomla, Wordpress, Rails, Django front-ends to become available as data services.
Microsoft has published a list of OData producers including SharePoint 2010, IBM WebSphere, and Microsoft SQL Azure. They have also released Codename “Dallas” CTP 2, aka Microsoft Pinpoint, a marketplace where vendors can sell their data using the OData protocol.