我有一个列表,我需要通过Web服务发送对象列表。该列表包含约37,000个对象。如果我将它序列化为XML,这将转换为大约125 MB的XML文件。.NET WebService发送大型XML文件
我认为默认情况下,Web服务通过序列化XML进行通信。这使我相信我实际上每次发送125MB文件。以二进制格式,这只会是大约5MB。有没有办法以二进制格式进行Web服务调用以避免大带宽冲击?
我有一个列表,我需要通过Web服务发送对象列表。该列表包含约37,000个对象。如果我将它序列化为XML,这将转换为大约125 MB的XML文件。.NET WebService发送大型XML文件
我认为默认情况下,Web服务通过序列化XML进行通信。这使我相信我实际上每次发送125MB文件。以二进制格式,这只会是大约5MB。有没有办法以二进制格式进行Web服务调用以避免大带宽冲击?
您可以使用WCF为您的web服务?如果是这样的话: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
,数据将通过数据块在数据块中进行流式传输,因此在将数据发送到客户端之前,您不需要分配内存中的全部数据。
Marc
您的来源和目的地功能是什么?可以结束gzip和ungzip吗? – hova 2009-12-04 21:18:37
Webservice可能不是这里最好的解决方案,提供有关服务使用者的更多信息。 – 2009-12-04 21:27:29
我正在处理一个顾问,该顾问需要以对象数组格式的数据:Object []。这可以防止我以任何方式压缩或更改数据。我可能会让他们改变它,但我只是想确保没有办法强制Web服务以二进制序列化。 – 2009-12-04 21:45:31