5

私は現在、AJAXからのデータを利用できるようにしながら、製品をもう少し開く方法としてWCFDataServicesを使用することを実験しています。私が気づいたことの1つは、JSON表現形式では、これらの__metadaメンバーがデータ全体に散在していることです。また、ODataのドキュメントで、これを見つけました(エントリの表現の下)。

オプションの「__metadata」名前/値ペアは、表されているエントリのプロパティを直接表さないオブジェクトに含める必要がある唯一のペアです。この名前と値のペアはデータではありませんが、代わりに、このドキュメントで定義されている規則により、表されるエントリのメタデータを指定します。

私の質問は、このメタデータがオプションの場合、帯域幅を節約するためにどのようにオフにするのですか?

4

2 に答える 2

2

WCFDataServicesサーバーの実装には__metadataを送信しない機能がないことは間違いありません。プロトコルがそれをオプションにするという事実は、特定の実装がそれを常に送信するとは限らないという意味ではありません。この場合、サーバーは__metadataを生成します。これは、クライアントにとって重要な情報が含まれている可能性があり、ペイロードがないと意味がないか、不完全な情報を提供する可能性があるためです。現在、サーバーにはこの動作を変更するオプションもありません。

于 2010-08-16T15:50:13.850 に答える
0

Reflectorでしばらく過ごした後、それを行う唯一の方法は、System.Data.Services.Serializers.JsonSerializerの独自のバージョンを作成することであるように見えます。メタダオブジェクトを書き込むメソッドWriteMetadataObjectは、その部分をスキップする設定を考慮せずに、WriteComplexTypePropertiesおよびWriteElementWithNameから呼び出されます。

ここで、必要なJSONを書き出すシリアライザーを作成し、それをカスタムの$format名でパイプラインにフックするのにどれだけの作業が必要かを検討する必要があります。

于 2010-08-16T12:17:31.273 に答える