平庸与杰出=加法与减法

思考其乐无穷 IT剩者为王

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
我们在项目中有些公共信息可以不通过方法参数提供,将这些信息封装到MessageHeader,通过客户端提交给Server。这种情况下我们需要注意WCF不同的实例模式、会话模式对Header的支持情况:

实力模式(InstanceContextMode)PerCall、PerSession支持Header,但是Single不支持自定义header,表现是服务器无法获取Header内容

另外如果在ServiceContract中启用会话模式(SessionMode)声明,那么SessionMode.NoAllowed、SessionMode.Allowed两种模式下是可以接收到Header的,但是SessionMode.Required模式无法接收Header,给我的感觉是Session跟messageheader有冲突。

建议:InstanceContextMode采用PerCall,而SessionMode采用NoAllowed;如果我们不做显示声明InstanceContextMode默认采用PerSession,而SessionMode采用Allowed

在PerCall、PerSession、Single三种模式中,PerCall是性能最高的,节省资源,支持系统的可伸缩性。由于服务实例的生命周期只存在于一次调用期间,特别对于那些持有昂贵资源的服务实例而言,这种方式可以有效地提高系统性能。销毁服务实例时,WCF不会断开与客户端的连接。


--畅所欲言,随心而谈--
本博客文章全部原创,转载请注明出处,谢谢
紫辰友创软件公司 http://www.bornsun.net/
版权所有 jiabao.cnblogs.com 转载请联系
posted on 2008-01-29 14:08 我是蚂蚁 阅读(1960) 评论(3) 编辑 收藏

评论

#1楼 2008-01-29 14:15 kkun      
基本么有看懂,
 回复 引用 查看   

#2楼[楼主] 2008-01-29 14:27 我是蚂蚁      
--引用--------------------------------------------------
kkun: 基本么有看懂,
--------------------------------------------------------
如果您做过WCF开发,应该会有所了解的。
 回复 引用 查看   

#3楼 2008-01-29 15:53 kkun      
--引用--------------------------------------------------
我是蚂蚁: --引用--------------------------------------------------
kkun: 基本么有看懂,
--------------------------------------------------------
如果您做过WCF开发,应该会有所了解的。
--------------------------------------------------------
谢谢!有机会做WCF再请教您,
 回复 引用 查看