代码之家  ›  专栏  ›  技术社区  ›  Adam Berent

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

  •  0
  • Adam Berent  · 技术社区  · 15 年前

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

    我认为在默认情况下,Web服务通过序列化XML进行通信。这让我相信我实际上每次发送125MB文件。在二进制格式中,这只需要大约5MB。有没有一种方法可以使Web服务以二进制格式调用,以避免大带宽中断?

    2 回复  |  直到 15 年前
        1
  •  2
  •   marc_s    15 年前

    你能在你的网络服务中使用wcf吗?如果是:WCF支持 streaming large data 穿过电线。

    如果您有机会将服务器端的数据压缩到一个压缩包中的5MB或其他东西,那么您肯定可以将其流式传输到您的客户机。

    您的WCF服务合同如下:

    [ServiceContract(Namespace="http://yourservice.com/streaming/2009/12")]
    interface IYourStreamingService
    {
        [OperationContract]
        Stream GetListOfObjects(int id);
    }
    

    您可以将获取或返回数据的方法定义为“流”,然后客户端可以像 FileStream 或A MemoryStream ,并且数据将以块的形式通过导线传输,因此在将数据发送到客户机之前,您不需要在内存中分配整个数据。

    马克

        2
  •  1
  •   David Basarab    15 年前
    • 可以序列化为二进制数组。
    • 然后将该数组转换为字符串。
    • 把那个字符串放到一个结构中,然后把它发送过来。
    • 然后在另一方面,将字节字符串数组转换回正常的字节数组。
    • 然后将其重新序列化到所需的对象中。