2016-09-04 11 views
0

WCFサービスから大きな結果セットを返そうとしています。大規模な結果セットにはおそらく約500Kのレコードがあり、各レコードには150個のカラムがあります。WCFから大きなコレクション結果セットを返す

私はWCFバインディングを設定することで、大きな結果セットを返すことができることを知っています。しかし、私は限界については分かりません。私はこのシナリオを試みましたが、 "maxItemsInObjectGraph"プロパティの制限を上げるためにエラーが発生しましたが、このプロパティの "2147483647"という値を設定しました。私は別のオプションを探って、これがBindingのmessageEncodingとtransferModeプロパティで実現できることを発見しました。私は "Mtom"と "StreamResponse"を試しましたが、どのように動作しているのか分かりません。

私はまたthisリンクを参照しましたが、私のクライアントが1つのデータを望んでいるのでページングをしたくありません。

だから、結論は次のとおりです。

1. Can we return large result set from WCF? Or Does the use of WCF best to return large result set or I need to move to different way like WebAPI? 
2. StreamResponse should work like returning results in chunck I guess but after implementation, I don't think it is working as I am getting result altogether. 

あなたの入力が認識されるであろう。

ありがとうございます!

答えて

0
  1. WCFサービスから大きなオブジェクトセットを返すことができます。 WebAPIやその他の.NETサービスフレームワークは、多くのデータを転送することを考慮する利点がありません。
  2. StreamResponseが最適です。これは、メッセージを部分ごとに転送するので、一瞬に500Kのレコードがすべて電線に残っているわけではありません。これはトランスポート層のオプションなので、クライアントにとっては、一度にすべてのメッセージを受け取ったようです。バインディングのMaxBufferSizeプロパティを編集すると、その部分のサイズを管理できます。 データのサイズを最小限にするには、BinaryMessageEncodingを使用して圧縮することもできます。

    <customBinding> 
    <binding name="primaryBinding" openTimeout="00:01:00" closeTimeout="00:01:00" 
          sendTimeout="00:30:00" receiveTimeout="00:30:00"> 
        <binaryMessageEncoding compressionFormat="GZip"> 
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
            maxNameTableCharCount="2147483647" /> 
        </binaryMessageEncoding> 
        <httpsTransport transferMode="Streamed" maxReceivedMessageSize="6000000" 
            maxBufferSize="6000000" maxBufferPoolSize="12000000" />   
    </binding>  
    

関連する問題