Dam*_*ian 4 streaming wcf web-services stream
我正在尝试从 WCF Web 服务中提取大量数据。请求相当小,而响应消息将非常大。目前,由于 IIS6 对其可分配的内存(~1.4GB)有限制,Web 服务正在引发 SystemOutOfMemory 异常。
我在一些博客中读到,实施流式传输可以解决我的问题。
有人可以分享他们在这个主题上的经验吗?我对任何可以共享的示例客户端和服务端代码或任何建议/最佳实践最感兴趣。内存流与文件流?返回类型应该是Stream、Message、Byte[]?
我的操作如下所示:(通常它会在响应数组中返回大量元素,约 200K 个元素)
MediumSizeResponseClass[] GetData(SmallSizeRequestClass request)
Run Code Online (Sandbox Code Playgroud)
如果您只想流回响应,请transferMode=streamedResponse在绑定配置中使用。这可确保仅传输返回的响应。
流函数的返回值必须是Stream. 然后,您可以从该流中读取数据并对其执行任何您需要执行的操作(存储它、分析它等等)。
所以基本上你会有一个类似这样的服务合同:
[ServiceContract]
interface IYourService
{
[OperationContract]
Stream GetData(SmallSizeRequestClass request);
}
Run Code Online (Sandbox Code Playgroud)
在服务器上,您基本上只是写入流,而在客户端上,您从流中读取。
您是否查阅过有关WCF Streaming的 MSDN 文档?
| 归档时间: |
|
| 查看次数: |
6795 次 |
| 最近记录: |