我正在尝试从WCF服务返回大型结果集。大结果集可能会有500K记录,每条记录将有150列。
我知道通过配置WCF绑定,我们可以返回大的结果集。但我不确定这个限制。我试过这个场景,但是错误增加了" maxItemsInObjectGraph"属性甚至我将值设置为" 2147483647"这个属性。我搜索了备用选项,发现可以使用Binding的messageEncoding和transferMode属性来实现。我试过和#34; Mtom"和" StreamResponse"但我不确定它是如何起作用的?
我还提到了this链接,但不想分页,因为我的客户想要一次性获取数据。
所以结论是:
result
您的意见将受到赞赏。
谢谢!
答案 0 :(得分:0)
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>