C# ADO.NET数据服务的数据压缩

C# ADO.NET数据服务的数据压缩,c#,.net,wcf,gzip,wcf-data-services,C#,.net,Wcf,Gzip,Wcf Data Services,我有一个ADO.NET数据服务,由.NET客户端应用程序使用的.NET应用程序(不是IIS)公开。对此数据服务的某些调用返回大量数据 我想在网上压缩XML数据,以减少有效负载并提高性能。这可能吗?您可以使用压缩和解压缩它。我假设您在.NET“应用程序”中?如果是这样,您需要编写一些自定义实现,因为WCF不提供这种现成的实现。幸运的是,你可以使用它 实际上我刚刚意识到这只是两个步骤中的第一步,取决于你的客户是否也是WCF?虽然这将对消息进行编码,但需要您的客户机使用类似配置的解码器,因为该实现不会

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

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

您可以使用压缩和解压缩它。

我假设您在.NET“应用程序”中?如果是这样,您需要编写一些自定义实现,因为WCF不提供这种现成的实现。幸运的是,你可以使用它


实际上我刚刚意识到这只是两个步骤中的第一步,取决于你的客户是否也是WCF?虽然这将对消息进行编码,但需要您的客户机使用类似配置的解码器,因为该实现不会设置必要的HTTP头来表示编码已发生在“纯”HTTP客户机上。因此,如果另一端不是WCF客户端,那么除了对消息本身进行编码外,还需要使用
WebOperationContext
应用适当的
内容编码:gzip
头。不幸的是,您无法在
MessageEncoder
实现本身中执行此操作,因为在该过程中为时已晚,因为当要求
MessageEncoder
写入消息内容时,消息帧(在本例中为HTTP头)已被写入。因此,您还需要在操作中应用附加的行为,例如,设置相应的标题。

如果您单击该链接。您可以看到关于如何压缩字节数组的示例,但是如何压缩通过ADO.NET数据服务传递的消息?我认为您必须获得ADO.NET数据服务类发出的原始XML数据,我相信有一种方法可以截获这些数据。但您要做的是获取XML数据,将其转换为字节数组,然后压缩并通过网络发送。。接收者也必须意识到这一点,并截获XML数据的接收。很明显,您需要gzip消息体,但这远远不能解决在请求/响应的正确时间获取消息体的问题。由于ado.net数据服务通过http工作,这是否意味着您的应用程序正在运行嵌入式http服务器?这听起来不像是标准设置。是否涉及asp.net?当然,你可能需要为这个问题提供更多的技术细节。对不起,输入错误,我的意思是写“消息编码器”,而不是“消息”编码。