我有一个对象列表,我需要通过Web服务发送。该列表包含大约37,000个对象。如果我将其序列化为XML,则转换为大约125 MB的XML文件。
我认为默认情况下,Web服务通过序列化XML进行通信。这让我相信我每次都会发送125MB文件。在二进制格式中,这只有大约5MB。有没有办法以二进制格式调用Web服务以避免大量带宽?
答案 0 :(得分:2)
您可以将WCF用于您的网络服务吗?如果是这样的话:WCF支持streaming large data。
如果您有可能将服务器端的数据压缩为ZIP中的5 MB或其他内容,您肯定可以将其流式传输到您的客户端。
您可能会将此类内容作为您的WCF服务合同:
[ServiceContract(Namespace="http://yourservice.com/streaming/2009/12")]
interface IYourStreamingService
{
[OperationContract]
Stream GetListOfObjects(int id);
}
您可以定义以“流”方式接收或返回数据的方法,然后客户端可以像FileStream
或MemoryStream
一样打开该流,并且数据将在以块的形式连接,因此在将数据发送到客户端之前,您不需要将整个数据分配到内存中。
马克
答案 1 :(得分:1)