如何使用WCF传输大量数据? [英] How to transfer large amount of data using WCF?
问题描述
我们目前正在尝试使用 WCF 和 PollingDuplex 将大量数据移动到 Silverlight 3 客户端.我已经阅读了 Silverlight 4 中的 MultiplerMessagesPerPoll 并且它似乎快了很多.是否有任何示例可供我参考(使用 MultipleMessagesPerPoll)?或者也许有一些关于使用 Net.TCP 的好参考?也许我应该采取完全不同的方法?任何想法或建议将不胜感激.
We are currently trying to move large amounts of data to a Silverlight 3 client using WCF with PollingDuplex. I have read about the MultiplerMessagesPerPoll in Silverlight 4 and it appears to be quite a bit faster. Are there any examples out there for me to reference (using MultipleMessagesPerPoll)? Or maybe some good references on using Net.TCP? Maybe I should be taking a completely different approach? Any ideas or suggestions would be greatly appreciated.
谢谢!
推荐答案
流式序列化响应块效果很好:
Streaming serialized response chunks works well:
您的 WCF 绑定配置将类似于以下内容:
<binding name="myCustomBinding">
<binaryMessageEncoding />
<httpTransport transferMode="StreamedResponse"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" />
</binding>
您的 Service 方法类似于:
[OperationContract]
public Stream GetDataStream(string objectId)
{
Stream stream = new MemoryStream();
MyObject obj = Manager.GetObject(objectId);
DataContractSerializer serilizer = new DataContractSerializer(typeof(MyObject));
serilizer.WriteObject(stream, obj);
stream.Position = 0;
return stream;
}
您的客户端完成方法会执行以下操作:
static void client_GetDataStreamCompleted(object sender, GetDataStreamCompletedEventArgs e)
{
if (e.Error == null)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(MyObject));
MyObject obj = serializer.ReadObject(new MemoryStream(e.Result)) as MyObject;
}
}
这篇关于如何使用WCF传输大量数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!