2011年11月8日

Open Data Protocol、WCF Data Servicesメモ

Open Data Protocol(以下odata)はURI でデータをリソースとして公開します。
例えば下記URIでPKeyが0のProductsリソースデータを表す
 http://services.odata.org/OData/OData.svc/Products(0)
GET、PUT、POST、DELETE等のHTTPメソッドでデータに対してCRUDを行います。

さらに関連するデータも取得できます
例えば下記URIで該当ProductのCategoryやSupplierを取得できます
 http://services.odata.org/OData/OData.svc/Products(0)/Category
 http://services.odata.org/OData/OData.svc/Products(0)/Supplier

ODataサービスを構築する場合、WCF Data Services(元々ADO.NET Data Services) を利用できます。
データソースがRDBの場合、Entity Data Modelを使ってサービス化できます。
データソースがRDB以外の場合、カスタム実装が必要になります。

ODataクライアントはOData SDKのクライアントライブラリを利用できます。
まだ.NET版とJava版しか試してませんが、両方ともODataサービスのメタデータから自動的にデータモデル、サービスプロキシのソースコード生成、クライアントは生成されたコードを使ってサービスにアクセスできます。
クライアントにとってXML/JSONをパースする必要がなく、そのままC#/Javaのクラスでデータをやり取りできます。

CRUDよりもっと複雑の操作はService Operationを使って公開できます。ただし下記制限があります
①パラメータとして使えるのはODataのPrimitive Typeのみ
②戻り値として使えるのはODataのPrimitive Typeまたはリソースタイプ
③パラメータはPOSTデータではなく、URIのQueryStringを使う(POSTメソッドでも)
④POSTメソッドを利用する場合、クライアントライブラリを利用できない

1 件のコメント:

  1. Service Operation の制限、とても参考になります。ありがとうございます。

    もっさりもふもふより

    返信削除