WCF Web服务的流响应的最佳实践

时间:2010-03-08 16:54:11

标签: wcf web-services streaming stream

我正在尝试从WCF Web服务中提取大量数据。请求相当小,响应消息非常大。目前,由于IIS6可以为其分配的内存(~1.4GB)限制IIS服务,因此Web服务正在抛出SystemOutOfMemory异常。

我在一些博客中读过,实现流媒体将解决我的问题。

有人可以分享他们对这个主题的经验吗?我最感兴趣的是任何样本客户端&可以共享的服务端代码或任何建议/最佳实践。 MemoryStream vs FileStream?返回类型应该是Stream,Message,Byte []?

我的操作如下所示:(通常它会在响应数组中返回大量元素,~200K元素)

MediumSizeResponseClass[] GetData(SmallSizeRequestClass request)

1 个答案:

答案 0 :(得分:4)

如果只想回传响应,请在绑定配置中使用transferMode=streamedResponse。这样可以确保只返回返回的响应。

流功能的返回值必须为Stream。然后,您可以从该流中读取并执行您需要执行的任何操作(存储,分析,无论如何)。

所以基本上你有这样的服务合同:

[ServiceContract]
interface IYourService
{
    [OperationContract]
    Stream GetData(SmallSizeRequestClass request);
}

在服务器上,您基本上只是写入流,而在客户端上,您从流中读取。

您是否在WCF Streaming上查阅了MSDN文档?