我有一个由 .NET 应用程序(不是 IIS)公开的 ADO.NET 数据服务,该服务由 .NET 客户端应用程序使用。对此数据服务的某些调用会返回大量数据。
我想压缩传输中的 XML 数据以减少负载并提高性能。这可能吗?
我假设你是使用 WCF 托管 http://msdn.microsoft.com/en-us/library/cc668805.aspx在你的.NET“应用程序”中?如果是这样,您需要编写一些自定义的MessageEncoder http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageencoder.aspx实现,因为 WCF 不提供开箱即用的功能。幸运的是有SDK 中的示例 http://msdn.microsoft.com/en-us/library/ms751458.aspx您可以使用。
我实际上刚刚意识到这只是两个步骤中的第一步,具体取决于您的客户是否也是 WCF?虽然这将对消息进行编码,但它需要您的客户端使用类似配置的解码器,因为该实现将not设置向“纯”HTTP 客户端发出编码已发生所需的 HTTP 标头。因此,如果另一端不是 WCF 客户端,除了对消息本身进行编码之外,您还需要使用WebOperationContext
以应用适当的Content-Encoding: gzip
标头。不幸的是,您不能在以下时间内执行此操作MessageEncoder
实施本身,因为在这个过程中为时已晚,因为到了MessageEncoder
被要求写入消息内容,消息帧(在本例中为 HTTP 标头)已被写入。因此,您还需要额外的行为,以IOperationBehavior http://msdn.microsoft.com/en-us/library/system.servicemodel.description.ioperationbehavior.aspx,应用于相应设置标题的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)