


























我们在项目中有些公共信息可以不通过方法参数提供,将这些信息封装到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 转载请联系
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。