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メソッドを利用する場合、クライアントライブラリを利用できない
Service Operation の制限、とても参考になります。ありがとうございます。
返信削除もっさりもふもふより