2013-05-08 61 views
0

例如,考虑从WCF服务向主叫客户端发送大约10000条记录。根据WCF,我们可以在web.config文件中设置响应缓冲区大小。我希望一次获得1000条记录的响应部分。如何在不改变web.config文件的情况下实现这一点?..在这方面需要帮助。WCF,部分按部件数据传输

在此先感谢。

+0

WCF架构不知道什么是“记录”,因此您必须编写必要的代码来提供此功能。缓冲区大小是不相关的(只要它足够大以使数据适合) – Alex 2013-05-08 11:33:00

+0

可能是所用的术语“记录”会改变我的问题的范围。对不起,使用它。如果数据大小超过65536(这是默认值)字节,则wcf会创建一个错误。一种解决方案是更新wcf服务的web.config中的maximumbuffersize值。但是,我的问题是如何避免配置文件更改并即使数据大小超过WCF支持的默认数据大小也继续进行数据传输。 – prash7 2013-05-08 11:38:39

+0

我看到了,请注意,这是一个完全不同的问题,你应该替换原来的文章 – Alex 2013-05-08 11:41:36

回答

1

有关如何处理您的情况的信息,请参见Large Data and Streaming (MSDN)

默认情况下,WCF以缓冲模式处理消息。这意味着消息的全部内容在发送之前或接收到之后都会在内存中显示。虽然这对于大多数场景来说都是一个很好的策略,并且对于诸如数字签名和可靠传递等消息传递功能来说是必需的,但大消息可能会耗尽系统的资源。

处理大型有效载荷的策略是 串流。尽管消息(尤其是那些用XML表示的消息)通常被认为是相对紧凑的数据包,但消息的大小可能是几千兆字节,并且与数据包相比更像一个连续的数据流 。当数据以 流模式而不是缓冲模式传输时,发送方使消息正文的内容 以流 的形式对接收方可用,并且消息基础结构将数据从 连续发送到接收方,因为它变为可用