2

我有一个由 .NET 客户端应用程序使用的 .NET 应用程序(不是 IIS)公开的 ADO.NET 数据服务。对此数据服务的某些调用会返回大量数据。

我想压缩网络上的 XML 数据以减少有效负载并提高性能。这可能吗?

4

2 回答 2

9

我假设您在 .NET“应用程序”中使用 WCF 托管?如果是这样,您将需要编写一些自定义MessageEncoder实现,因为 WCF 不提供开箱即用的功能。幸运的是,SDK中有一个示例可供您使用。

实际上,我刚刚意识到这只是取决于您的客户是否也是 WCF 的两步之一?虽然这将对消息进行编码,但它要求您的客户端使用类似配置的解码器,因为该实现不会设置必要的 HTTP 标头,以表明“纯”HTTP 客户端已发生编码。因此,如果它不是另一端的 WCF 客户端,除了对消息本身进行编码之外,您还需要使用WebOperationContext来应用适当的Content-Encoding: gzip标头。不幸的是,您不能在MessageEncoder实现本身中执行此操作,因为在此过程中为时已晚,因为到了MessageEncoder要求将消息内容写入消息帧,在本例中为 HTTP 标头,已被写入。因此,您还需要以 的形式将其他行为IOperationBehavior应用于相应地设置标头的操作。

于 2009-11-12T17:49:03.547 回答
0

您可以使用GZipStream 对其进行压缩和解压缩。

于 2009-11-07T01:12:25.297 回答