7

私はODataを初めて使用するので、ご容赦ください。

ODataでIQueryable<>を使用していて、サーバーによって生成されるレコードの数が多い(たとえば、10000)と仮定すると、クライアントが到着し続けるときに(HTTPストリーム全体が受け取られました)?

私が念頭に置いている概念は、SQLDataReaderでLINQを使用する場合(詳細)に似ています。ここでは、レコードがLINQ2SQLプロバイダーによって列挙されている場合にのみ、SQLからデータがフェッチされます(SqlDataReaderに接続された基になる前方専用サーバー側カーソルによって)。

HTTPはストリーミングを許可します。OData IQueryable <>はそのサポートを利用できますか?エンドツーエンドのストリーミングを実現できれば、データはサーバー上で列挙され、一度に1レコードずつHTTPストリームに流れ込みます(シリアル化されます)。ストリームがクライアントによって受信され、逆シリアル化されると、エンティティが列挙され、一度に1つずつ到着し続ける可能性があります。

これは希望的観測ですか?

4

1 に答える 1

2

WCFデータサービスでコンテンツをストリーミングすることは可能ですか?はい、です。これを行うには、写真、ビデオ、ドキュメントなどのバイナリラージオブジェクト(BLOB)データのストリーミングを許可するストリーミングプロバイダーを実装する必要があります(エンティティなし

大きな結果セットがIISからストリーミングされる場合、それはfeed / xml / jsonであり、応答が終了するまで有効ではありません。ただし、$skipパラメーターと$topパラメーターを使用して複数の並列リクエストを実行し、その結果セットをいくつかの小さなリクエストに分割して、それらが到着したときにそれらを結合することができます。

更新:別のオプションは、この男としてwcfdsを介してストリーミングするための独自のインフラストラクチャを作成することで可能ですhttp://blogs.msdn.com/b/tom_laird-mcconnell/archive/2010/01/18/using-ado-net-wcf -data-services-for-streaming-infinite-event-result-sets.aspx

于 2012-11-29T15:57:01.057 に答える