.NET Web服务发送大型XML文件

时间:2009-12-04 21:13:29

标签: .net web-services serialization xml-serialization

我有一个对象列表,我需要通过Web服务发送。该列表包含大约37,000个对象。如果我将其序列化为XML,则转换为大约125 MB的XML文件。

我认为默认情况下,Web服务通过序列化XML进行通信。这让我相信我每次都会发送125MB文件。在二进制格式中,这只有大约5MB。有没有办法以二进制格式调用Web服务以避免大量带宽?

2 个答案:

答案 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);
}

您可以定义以“流”方式接收或返回数据的方法,然后客户端可以像FileStreamMemoryStream一样打开该流,并且数据将在以块的形式连接,因此在将数据发送到客户端之前,您不需要将整个数据分配到内存中。

马克

答案 1 :(得分:1)

  • 您可以序列化为二进制数组。
  • 然后将该数组转换为字符串。
  • 将该字符串放入结构中,然后将其发送出去。
  • 然后在另一边,将字节串数组转换回正常的字节数组。
  • 然后将其重新序列化为您需要的对象。