OData プロトコル実装の詳細
Open Data Protocol (OData) では、プロトコルを実装するデータ サービスが、特定の機能の最小セットを提供する必要があります。 これらの機能は、プロトコルのドキュメントで、"should (必要)" および "must (必須)" という言葉を使って示されています。その他のオプションの機能は、"may (任意)" という言葉を使って示されています。このトピックでは、現在 WCF Data Services で実装されていないオプションの機能について説明します。 詳細については、OData プロトコルのドキュメントを参照してください。
$format クエリ オプションのサポート
OData プロトコルは、JavaScript Notation (JSON) と Atom フィードの両方をサポートしており、OData の $format システム クエリ オプションを使用すると、クライアントは応答フィードの形式を要求できます。 このシステム クエリ オプションは、データ サービスでサポートされている場合、要求の Accept ヘッダーの値をオーバーライドする必要があります。 WCF Data Services では、JSON と Atom フィードのどちらでも返すことができます。 ただし、既定の実装では $format クエリ オプションをサポートしておらず、Accept ヘッダーの値だけを使用して応答の形式を決定します。 クライアントが Accept ヘッダーを設定できない場合のように、データ サービスで $format クエリ オプションをサポートしなければならないこともあります。 このようなシナリオをサポートするには、このオプションを URI で処理するように、データ サービスを拡張する必要があります。 この機能をデータ サービスに追加するには、MSDN コード ギャラリー Web サイトから「ADO.NET Data Services のための JSONP および URL 制御の形式のサポート」のサンプル プロジェクトをダウンロードして、データ サービス プロジェクトに追加します。 このサンプルは、$format クエリ オプションを削除し、Accept ヘッダーを application/json に変更します。 サンプル プロジェクトを含めるときに、JSONPSupportBehaviorAttribute をデータ サービス クラスに追加すると、サービスが $format クエリ オプションの $format=json を処理できるようになります。 $format=atom や他のカスタム形式も処理するには、このサンプル プロジェクトをさらにカスタマイズする必要があります。
WCF Data Services の動作
次の WCF Data Services の動作は、OData プロトコルでは明示的に定義されていません。
既定の並べ替え動作
データ サービスに送信されるクエリ要求に、$top または $skip システム クエリ オプションが含まれ、$orderby システム クエリ オプションが含まれていない場合、返されるフィードはキー プロパティで昇順に並べ替えられます。 これは、結果を正しくページングするには並べ替えが必要であるためです。 そのために、データ サービスがクエリに並べ替え式を追加します。 この動作は、データ サービスでサーバー ドリブン ページングが有効になっている場合にも発生します。 詳細については、「データ サービスの構成 (WCF Data Services)」を参照してください。返されるフィードの並べ替えを制御するには、クエリ URI に $orderby を含める必要があります。