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