【问题标题】:How to fetch large data WCF - Stream or Buffered?如何获取大数据 WCF - 流式或缓冲式?
【发布时间】:2012-09-28 20:31:12
【问题描述】:

目前我正在使用默认缓冲传输模式的 NetTcpBinding。我正在尝试确定什么是我的请求的最佳解决方案,该请求构建了一个最终成为大量数据的类。

基本上,我有一个进入 WCF 的请求,以获取一堆报告信息并将其返回给客户端。只要这低于 64k MaxMessageRecievedSize 就可以了,但是如果超过了,我最终会遇到异常。

我是否应该切换到流传输模式,然后将文件流式传输回客户端,因为数据可能很小也可能很大?或者增加 MaxMessageRecievedSize 可以吗?增加 MaxMessageRecievedSize 似乎是个坏主意,因为如果我们有多个到服务的连接都在获取大量数据,我们可能会遇到内存问题?

我有什么想法可以实现这一目标吗?

【问题讨论】:

  • 对您来说,大消息有多大?如今,64k 并不是那么大。我不会担心这样大小的消息(或在合理范围内增加它),除非您的服务器端响应非常慢、并发流量高或内存非常低。
  • 理想情况下,运行服务的机器至少有 4GB。但是,我试图确保我们可以从一开始就支持小型和超大型文件。因此,也许今天的报告大小是 64kb 或 65mb,但无论哪一天它们变成 5gb+?似乎唯一的答案是流式传输,这样大小就永远不是一个因素......
  • 对较大的文件使用流式传输。请记住,“大”是相对的,但我会说任何超过 10 MB 的东西都是大的。

标签: c# wcf wcf-binding


【解决方案1】:

对于您提到的尺寸,您应该切换到流式传输。 http://msdn.microsoft.com/en-us/library/ms733742.aspx 有一个详细的文档讨论这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多