我有一个由 .NET 客户端应用程序使用的 .NET 应用程序(不是 IIS)公开的 ADO.NET 数据服务。对此数据服务的某些调用会返回大量数据。
我想压缩网络上的 XML 数据以减少有效负载并提高性能。这可能吗?
我有一个由 .NET 客户端应用程序使用的 .NET 应用程序(不是 IIS)公开的 ADO.NET 数据服务。对此数据服务的某些调用会返回大量数据。
我想压缩网络上的 XML 数据以减少有效负载并提高性能。这可能吗?
我假设您在 .NET“应用程序”中使用 WCF 托管?如果是这样,您将需要编写一些自定义MessageEncoder
实现,因为 WCF 不提供开箱即用的功能。幸运的是,SDK中有一个示例可供您使用。
实际上,我刚刚意识到这只是取决于您的客户是否也是 WCF 的两步之一?虽然这将对消息进行编码,但它要求您的客户端使用类似配置的解码器,因为该实现不会设置必要的 HTTP 标头,以表明“纯”HTTP 客户端已发生编码。因此,如果它不是另一端的 WCF 客户端,除了对消息本身进行编码之外,您还需要使用WebOperationContext
来应用适当的Content-Encoding: gzip
标头。不幸的是,您不能在MessageEncoder
实现本身中执行此操作,因为在此过程中为时已晚,因为到了MessageEncoder
要求将消息内容写入消息帧,在本例中为 HTTP 标头,已被写入。因此,您还需要以 的形式将其他行为IOperationBehavior
应用于相应地设置标头的操作。
您可以使用GZipStream 对其进行压缩和解压缩。