【发布时间】:2012-09-28 20:31:12
【问题描述】:
目前我正在使用默认缓冲传输模式的 NetTcpBinding。我正在尝试确定什么是我的请求的最佳解决方案,该请求构建了一个最终成为大量数据的类。
基本上,我有一个进入 WCF 的请求,以获取一堆报告信息并将其返回给客户端。只要这低于 64k MaxMessageRecievedSize 就可以了,但是如果超过了,我最终会遇到异常。
我是否应该切换到流传输模式,然后将文件流式传输回客户端,因为数据可能很小也可能很大?或者增加 MaxMessageRecievedSize 可以吗?增加 MaxMessageRecievedSize 似乎是个坏主意,因为如果我们有多个到服务的连接都在获取大量数据,我们可能会遇到内存问题?
我有什么想法可以实现这一目标吗?
【问题讨论】:
-
对您来说,大消息有多大?如今,64k 并不是那么大。我不会担心这样大小的消息(或在合理范围内增加它),除非您的服务器端响应非常慢、并发流量高或内存非常低。
-
理想情况下,运行服务的机器至少有 4GB。但是,我试图确保我们可以从一开始就支持小型和超大型文件。因此,也许今天的报告大小是 64kb 或 65mb,但无论哪一天它们变成 5gb+?似乎唯一的答案是流式传输,这样大小就永远不是一个因素......
-
对较大的文件使用流式传输。请记住,“大”是相对的,但我会说任何超过 10 MB 的东西都是大的。
标签: c# wcf wcf-binding