如何在WCF中实现流式传输?
我在使用 WCF 获取大量数据时遇到问题,因此我不想增加“maxReceivedMessageSize =“65536”。因此有任何替代方案或者我可以使用流式传输来实现这一点。如果是,那么如何?
请建议。
I am facing the problem while using the WCF to fetching the large amount of data, so I do not want to increase the "maxReceivedMessageSize="65536". So any alternative for that or can I achieve that using streaming. If yes then how ?
Please suggest.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您可以在 WCF 中流式传输数据,但 WCF 在流式传输模式下工作时有一些限制。因此,如果您不介意自己处理它,您可能会考虑实现一个返回数据块的方法并多次调用它。
否则,您可以在配置中启用流模式,例如
并从您的 Contract 方法返回一个
Stream
对象。这样,当您读取流对象时,数据就会被传输。如果您的数据位于流中,例如传输文件时。你只需打开流并返回它。否则,您可以使用
MemoryStream
和DataContractSerializer
来 序列化几乎所有对象树。有关详细信息,请查看此和此
虽然这听起来很简单,但存在复杂性和局限性对于流模式。如果您只需要一种简单的方法来绕过大对象传输的大小限制,请考虑在多次调用中部分发送对象。
Yes you can stream data in WCF, but WCF has some limitations while working in Streamed mode. So you might like to consider implementing a method that returns chunks of data and calling it multiple times if you don't mind handling it yourself.
Otherwise you can enable Streamed mode in configuration like
And return a
Stream
object from your Contract method. This way the data will be transferred as you read the stream object.if your data is in a stream like a when you transfer a file. you just open the stream and return it. otherwise you can use a
MemoryStream
andDataContractSerializer
to serialize almost any object tree.for details check this and this
While this sounds simple there are complications and limitations for Streamed mode. If you just need a simple way to bypass the size limits for a big object transfer, Consider sending the object partially on multiple calls.