クライアント アプリケーションでの OData サービスの使用 (WCF Data Services)

Web ブラウザーに URI を入力することで、Open Data Protocol (OData) フィードを公開するサービスにアクセスできます。 URI はリソースのアドレスを提供し、要求メッセージがこれらのアドレスに送信されてリソースが表す基になるデータのアクセスまたは変更を行います。 ブラウザーは HTTP GET コマンドを発行して、要求されたリソースを OData フィードとして返します。 詳細については、「Web ブラウザーから OData フィードへのアクセス (WCF Data Services クイック スタート)」を参照してください。

Web ブラウザーは OData サービスが予期されたデータを返すかどうかをテストするために便利ですが、データの作成、更新、および削除も行うことができる運用 OData サービスは、一般的にアプリケーション コードや Web ページのスクリプト言語を使用してアクセスします。 このトピックでは、クライアント アプリケーションから OData フィードにアクセスする方法の概要について説明します。

REST セマンティクスを使用したデータのアクセスおよび変更

OData は、OData フィードを公開するサービスと、OData フィードを使用するアプリケーションの間の相互運用性を保証するのに役立ちます。アプリケーションは、特定の HTTP アクションの要求メッセージ、およびアクションを実行するエンティティ リソースのアドレスを指定する URI を送信して、OData ベースのサービス内のデータのアクセスおよび変更を行います。 エンティティ データを指定する必要がある場合、メッセージの本文に、エンコードされたペイロードとして明示的に指定します。

HTTP アクション

OData は、アドレス指定されたリソースが表すエンティティ データに対する操作の作成、読み取り、更新、および削除を実行する次の HTTP アクションをサポートします。

  • HTTP GET - これは、ブラウザーからリソースにアクセスするときの既定のアクションです。 要求メッセージではペイロードは指定されず、要求されたデータを含むペイロードを含む応答メソッドが返されます。

  • HTTP POST - 新しいエンティティ データを指定されたリソースに挿入します。 挿入するデータは、要求メッセージのペイロードで指定されます。 応答メッセージのペイロードには、新しく作成されたエンティティのデータが含まれます。 これには自動生成されたキー値が含まれます。 ヘッダーには、新しいエンティティ リソースのアドレスを指定する URI も含まれます。

  • HTTP DELETE - 指定したリソースが表すエンティティ データを削除します。 ペイロードは要求メッセージおよび応答メッセージ内に存在しません。

  • HTTP PUT - 要求されたリソースの既存のエンティティ データを、要求メッセージのペイロードで指定された新しいデータで置き換えます。

  • HTTP MERGE - エンティティ データを変更するためだけに削除を実行した後にデータ ソースへの挿入を実行する非効率性を考慮して、OData では新しい HTTP MERGE アクションが導入されています。 要求メッセージのペイロードには、アドレス指定されたエンティティ リソースで変更する必要のあるプロパティが含まれます。 HTTP MERGE は HTTP 仕様で定義されていないので、OData 対応のサーバー以外で HTTP MERGE 要求をルーティングするには追加の処理が必要になる場合があります。

詳細については、OData: 操作に関する Web ページを参照してください。

ペイロード形式

HTTP PUT、HTTP POST、または HTTP MERGE 要求の場合、要求メッセージのペイロードは、データ サービスに送信するエンティティ データを含んでいます。 ペイロードのコンテンツは、メッセージのデータ形式によって異なります。 そのようなペイロードは、DELETE 以外のすべてのアクションに対する HTTP 応答にも含まれます。 OData は、サービスでのデータのアクセスおよび変更を行うために次のペイロード形式をサポートします。

  • Atom - Web フィード、ポッドキャスト、Wiki、および XML ベースのインターネット機能用に HTTP を介したデータ交換を有効にするために Atom 公開プロトコル (AtomPub) の拡張として OData で定義されている XML ベースのメッセージ エンコーディング。 詳細については、OData: Atom 形式に関する Web ページを参照してください。

  • JSON - JSON (JavaScript Object Notation) は、JavaScript プログラミング言語のサブセットに基づく軽量のデータ交換形式です。 詳細については、OData: JSON 形式に関する Web ページを参照してください。

ペイロードのメッセージ形式は、HTTP 要求メッセージのヘッダーで要求されます。 詳細については、OData: 操作に関する Web ページを参照してください。

クライアント ライブラリを使用したデータのアクセスおよび変更

WCF Data Services には、.NET Framework ベースのクライアント アプリケーションおよび Silverlight ベースのクライアント アプリケーションから OData フィードを簡単に使用できるクライアント ライブラリが含まれています。 これらのライブラリは、HTTP メッセージの送受信を簡略化します。 また、メッセージ ペイロードをエンティティ データを表す CLR オブジェクトに変換します。 クライアント ライブラリには、DataServiceContext および DataServiceQuery<TElement> という 2 つのコア クラスがあります。 これらのクラスを使用すると、データ サービスをクエリして、返されるエンティティ データを CLR オブジェクトとして処理できます。 詳細については、「データ クライアント (WCF Data Services)」および「WCF Data Services (Silverlight)」を参照してください。

Visual Studio の [サービス参照の追加] ダイアログを使用して、参照をデータ サービスに追加できます。 このツールは、参照されたデータ サービスからサービス メタデータを要求し、データ サービスを表す DataServiceContext を生成します。また、エンティティを表すクライアント データ サービス クラスも生成します。 詳細については、「クライアント データ サービス クラスの生成 (WCF Data Services)」を参照してください。

その他の種類のクライアント アプリケーションで OData フィードを使用するためのプログラミング ライブラリを利用できます。 詳細については、OData SDK に関する Web ページを参照してください。

関連項目

概念

OData サービスへのアクセス (WCF Data Services)

クイック スタート (WCF Data Services)