我需要发送,并通过WCF接收包含几个小领域,再加上一个大的XML字符串对象,像这样:通过WCF发送大型Xml字符串的最有效的解决方案?
[DataContract]
public class ServiceResponse
{
[DataMember]
public int Id { get; set;}
[DataMember]
public string Xml {get; set;}
}
我必须使用一个基于HTTP绑定,但服务是内部的,所以合约dll将被共享。 Xml字符串可能会达到几MB。该服务允许通过客户端机器在服务器之间传输数据,因此第一次客户端调用将检索大量的Xml,将其保存到本地磁盘,然后第二次调用将数据从磁盘传输到另一个其他盒子上的另一个服务实例。所以客户从字面上保存数据并转发它,根本没有逻辑或处理。
我需要最有效的机制 - 意味着小负载和快速 - 用于发送这些对象。
一些问题:
- 什么是有效载荷发送大块的XML的最有效的方法是什么?
- 在使用
BinaryFormatter
通过线路发送然后使用Stream
类型作为服务操作中的参数之前,将对象序列化到MemoryStream
有任何优势吗? - 对于几MB的消息,是否使用
Streamed
传输模式有什么区别?
我不能使用像Protobuf-net(悲伤)的第三方库。
欣赏任何意见...
“几个小领域,加一个大的Xml字符串“。他并不是说该对象被序列化为XML,而是该对象包含一个xml字符串。话虽如此,我认为你的答案仍然是正确的。 – aquinas 2013-02-25 21:51:49
不好意思,说不能用protobuf。在Xml上,不,这不是一个对象的表示,它实际上是Xml数据。所以我建议将Xml转换为二进制。 – MalcomTucker 2013-02-25 21:52:55
@MalcomTucker:当BinaryFormatter是一个选项时,为什么没有protobuf? – 2013-02-25 21:53:51