关于 WCF 中数据压缩的几篇文章

在.net3.0出现以前我们进行分布式开发式有两个选择一个是webservice,另一个是remoting;

在早期的项目中,比较喜欢remoting,因为remoting可控性好,也好部署,不需要依赖其他的宿主环境。 今年的做的项目大部分都是webservice的,因为在这几年remoting过程中遇到了几个问题,比较典型的就是remoting的宿主程序容易出现异常,并且这个异常很难捕捉,一旦宿主程序的压力过大,就会出现这个情况。比较脸红的是,这个问题到现在也没有发现是怎么产生的,也就无从说解决了

凡是涉及到分布式部署的项目都会有数据的传输问题:要对需要传输的数据进行压缩。较早的项目中,都是将dataset压缩为流对象(经过序列化的)后进行传递的,压缩比1/4的样子。

.net3.0的出现极大的方便了分布式项目的开发部署,在学习wcf时候,一直在寻找在wcf构架下的数据压缩方案,就将搜集到一些文章汇总在这里(这方面的东西少的可怜),供大家参考。个人比较喜欢 WS-Compression for WCF 感觉思路更清晰

ms的文章:Custom Message Encoder: Compression Encoder
http://msdn2.microsoft.com/en-us/library/ms751458.aspx,例子在TechnologySamples、Extensibility、Channels、MessageEncoder、Compression目录中

msdn社区的文章: Serialize Datasets as binary (not XML) in WCF
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1618046&SiteID=1&pageid=0#1648392
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1520385&SiteID=1,这里面 Pablo Cibraro 的回复非常清晰,俺就摘录在这里了

There are basically three ways to implement compression in WCF.

1. At transport level using a message encoder which compress all the data throughout the entire channel (From the client to the service). There is a sample of this in the WCF SDK,  [SDK Folder]TechnologySamples/Extensibility/MessageEncoder/Compression

2. At message level, adding some metadata to the soap message (Soap headers) and compressing the soap body. This approach can use a WCF binding or a MessageInspector Behavior to modify the soap messages. You can find an example here, http://weblogs.asp.net/cibrax/archive/2006/03/29/WS_2D00_Compression-for-WCF.aspx

3. Only for the Http transport, you can use the Http Compression capability. I haven't seen any implementation of this technique so far.

I hope this can help you

Regards,

Pablo.

 

WS-Compression for WCF
http://weblogs.asp.net/cibrax/archive/2006/03/29/441398.aspx


继续补充中...



你可能感兴趣的:(WCF)