application developers frequently need to access data to present in their
applications. Of the variety of facilities available for data services,
Microsoft touts oData as solution, which
is based on entity and relationship model that allows access to data in REST
style (REST stands for representative transfer).
What is oData?
The documentation for Open Data Protocol defines it as a Web
protocol for querying and updating data and builds upon Web technologies to
provide information from a variety of applications, services and stores.
Odata provides a client library for the windows phone
platform that can generate http requests to the odata data service provider. The
library is available
for download from odata’s codeplex page. The client library transforms the
response feed into objects, which can be used by the application.
Where to Get the Client Library?
To get the client library, download
the latest version. When you extract the contents, you will find the
DataSvcUtil.exe – tool to generate data classes that
represent the data model of an OData service. This tool has a few command-line
options which we will discuss later.
Readme.txt – describes the contents of the client
System.Data.Services.Client.dll and System.Data.Services.Design.dll
– client libraries we will discuss in another article.
If you open up System.Data.Services.Client.dll inside Visual Studio‘s
Object browser, you will notice it contains the following classes:
Figure 1: Open up System.Data.Services.Client.dll in Visual Studio
The DataServiceContext class helps to abstract the
implementation against specific data services and also helps maintain change in
state of entities on the client, which helps to support change tracking and
To start with, when using an OData data service provider, we
need to generate data classes for consumption in our application.
We use the datasvcutil.exe for this purpose.
For example, if you were developing a NetFlix application,
you can use the datasvcutil to generate the data classes.
datasvcutil /uri:http://odata.netflix.com/v1/Catalog/ /out:.\Netflix.cs /DataServiceCollection
Let us look all the arguments supported by datasvcutil.exe.
/uri: The URI hosting the OData Service.
/out : The name of the data class file you want to
generate. This file will represent the data objects.
/DataServiceCollection: This ensures that
DataServiceCollection classes are generated for each collection in the model.
This facilitates easy binding to UI elements.
/in: The path of the file to read the conceptual
/language: You have an option to generate data
classes in either VB or C#. By default, the language is C#.
/help: displays the help text.
DataServiceCollection is a dynamic data collection that
provides notifications when collection gets modified.
Using Data Services
All operations against data services in the Windows Phone
platform are asynchronous. Also, these operations are performed using Begin/End
method pairs. The Begin method lets you register a delegate, which can be
called by the operating system. This delegate will then call the End method
How oData Queries Work
When an application makes a URI based query against an oData
service, the BeginExecute method is called. The client library then creates an
HHTP GET request message, which is then fired. When an EndExecute method is
called, the client library parses the response message to convert it to data
service class instances.
Since OData limits data that a query can return,
you can use LoadNextPartialSetAsync
to load the next set of data.
This article presented an overview of the OData Protocol. In
a subsequent article we will learn how to develop a Windows Phone application,
which consumes an oData service.