平庸与杰出=加法与减法

思考其乐无穷 IT剩者为王

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
在.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


继续补充中...



--畅所欲言,随心而谈--
本博客文章全部原创,转载请注明出处,谢谢
紫辰友创软件公司 http://www.bornsun.net/
版权所有 jiabao.cnblogs.com 转载请联系
posted on 2007-12-04 16:56 我是蚂蚁 阅读(1834) 评论(5)  编辑 收藏 所属分类: WCF

评论

#1楼  2007-12-04 18:00 Enzo      
谢谢 分享
  回复  引用  查看    

#2楼  2007-12-05 01:13 sand [未注册用户]
目前项目中也是用remoting的方式,经常会遇到.net runtime异常错误导致程序失去响应,不知道lz遇到的是什么样的问题呢?交流交流
  回复  引用    

#3楼 [楼主] 2007-12-05 09:24 我是蚂蚁      
@sand
--引用--------------------------------------------------
sand: 目前项目中也是用remoting的方式,经常会遇到.net runtime异常错误导致程序失去响应,不知道lz遇到的是什么样的问题呢?交流交流
--------------------------------------------------------
问题的表现就是宿主程序出现异常,然后就无法响应了。

目前主要的情况就是系统压力过大的时候,进行频繁的大流量的数据交换,就可能会出现这种情况。解决的办法就是尽快的释放资源(尤其是Dataset),但是就是这样也没有彻底解决这个问题。

个人感觉还是.net的垃圾回收有问题。

在重新构架的系统中,尽量避免通过dataset或者流来交换数据,但是目前该系统未正式上线,所以也不好说这个思路是否能避免remoting的问题,当然理论上是可以的。

  回复  引用  查看    

#4楼  2007-12-05 16:54 sand [未注册用户]
事件类型: 错误
事件来源: .NET Runtime
事件种类: 无
事件 ID: 1023
描述:
事件 ID ( 1023 )的描述(在资源( .NET Runtime )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: .NET Runtime version 2.0.50727.63 - Fatal Execution Engine Error (7A05F093) (80131506).
以上信息是每隔一段时间就遇到,一般出错后马上宿主程序就失去响应,还没有找到具体的解决,微软官方也有对应的补丁,不过打了依然会这样,不知道是remoting问题呢还是系统设计的问题,郁闷。现在也在研究wcf看看是否会更好用一点,但是看过一份wcf和remoting的性能分析比较,wcf好像没有比较明显的提高,甚至有些指标还不如remoting,不知lz怎么看待的呢?

  回复  引用    

#5楼 [楼主] 2007-12-10 14:15 我是蚂蚁      
@sand
我手头上的项目一直在使用.net remoting,有五年的时间了,没有碰到您说的情况。

根据ms出的测试情况,效率上wcf比remoting稍高
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-05 10:05 编辑过


相关链接: