在WCF中,您是否应该为大型邮件设置较大的MaxBufferPoolSize值?

时间:2008-11-28 08:25:21

标签: wcf performance

对于我开发的这个WCF服务,我必须将MaxReceivedMessageSize设置为5MB。我目前的问题是弄清楚是否有更大的MaxBufferPoolSize值,如5MB,或保留原来的512KB值。

有谁知道这种情况的推荐设置是什么? 总之,我应该设置MaxBufferPoolSize = 5242880(5MB),还是MaxBufferPoolSize = 524288(512KB)?

更新:为了便于说明,该服务旨在插入新的客户记录以及一些扫描的文档。因此,邮件大小可能达到5MB。

我们可以尝试使用替代技术分离扫描文档的上传,但要求是客户记录和扫描文档必须在同一个交易中,所以我们决定采用这种方法,直到我们弄清楚如何使用WCF的交易能力。

4 个答案:

答案 0 :(得分:9)

查看这篇文章。 http://kennyw.com/?p=51

建议将大型消息的MaxBufferPoolSize设置为零,以避免缓冲。

答案 1 :(得分:2)

将大量数据传输到基于WCF的服务是完全可以的,但是你应该研究一种支持流而不是缓冲传输的绑定(BasicHttpBinding或CustomBinding),这样每个服务实例都不会过多地占用存储器中。

- larsw

答案 2 :(得分:0)

如果您正在尝试传输文件等,这似乎是您唯一的选择。否则,我会查看为什么首先在服务中发送这么大的数据。如果它是文件等,你只需要忍受那么大的尺寸和可能的影响。如果它是您正在移动的文件,您也可能想要尝试FTP组件或其他东西。

我可以通过一些细节提供更多信息。我稍后会回来查看你是否在你的问题中添加了任何内容。

答案 3 :(得分:-4)

5 Mb似乎是通过Web服务传输的大量数据。 您应该首先考虑的是发送更少的数据。 其次,您需要根据需要设置大小。