WCF从理论到实践消息交换模式.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WCF 从理论到实践(7):消息交换模式 本文的出发点 本文的出发点 通过阅读本文,您能理解以下知识: WCF WCF 定义了哪几种消息交换模式? One-WayCalls Request/Reply Duplex 用示例来解析 WCF 的消息交换模式 本文适合的读者 本文适合的读者 本文涉及到了 SOA 中的消息交换的基础概念,需要一些初级的 XmlWeb Service 和分布式系统开发的经验,最好理解 WCF 架构 WCF 定义了哪几种消息交换模式? WCF 定义了三种消息交换方式 ,分别为: One-WayCalls One-WayCalls Request/Reply Duplex One-WayCalls One-WayCalls 在几种消息交换模式中,one-waycalls 是最没良心的,对于客户端,one-way 在几种消息交换模式中,one-waycalls 是最没良心的,对于客户端,one-way calls 就如肉包子打狗,有去无回。下面的图示给出这种交换模型的特征: 在这种交换模式中,存在着如下的特征 没有返回值,返回类型只能为 没有返回值,返回类型只能为 void 不能包含 ref 或者 out 类型的参数 只有客户端发起请求,服务端并不会对请求进行回复。 通过设置 OperationContract 的 IsOneWay=True 可以将满足要求的方法设置为这种消息交换模式,方法如下: [OperationContract(IsOneWay=true)] void Test(int intVal); 上面的代码,就是将方法 Test 设置成为了 one-waycall 的消息交换模式,注意如果 Test 方法的返回类型不是 void 或者带有 ref 或者 out 类型的参数,都会抛出异常 InvalidOperationException,如下面列表中的方法均不能被声明为one-way 模式 int Test(int intVal); int Test(); int Test(); void Test(ref int intVal); 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 类型 相比 Duplex 来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后,消息交换就结束了。 3. 在这种模式下,服务端永远是服务端,客户端就是客户端,职责分明。 void Test(out int intVal); Request/Reply request/reply 比起 one-way 来说,就更懂得礼尚往来,它是缺省的消息交换 模式,类似于 http 协议中的请求/响应模型。下面的图示给出这种交换模式的特 征: 这种交换模式是使用最多的一中,它有如下特征: 它是缺省的消息交换模式,设置 它是缺省的消息交换模式,设置 OperationContract 便可以设置为此种消息交 换模式 [OperationContrac] void Test(int intVal); 注意,尽管Test 方法返回为void,但Server 也会生成reply 响应并发送给client. 有来有往是这种模式的特征。 Duplex 这种交换模式比起上面两种,比较复杂,它和request/reply 模式类似,也是有来有往,但处理过程却比 request/reply 要复杂,因为它可以在处理完请求之后, 通过请求客户端中的回调进行响应操作,这种模式的图示为: 消息交换过程中,服务端和客户端角色会发生调换服务端处理完请求后,返回给客户端的不是 reply,而是 callback 请求。注意,这种方式和 request/reply 方式的图示也很类似,当二者存在着至关重要的不同,它在客户端也有监听节点,在 callback 的时候,服务器和客户端的角色会进行交换,服务端此时成了严格意义上的客户端,而客户端此时能接受服务端的 消息交换过程中,服务端和客户端角色会发生调换 服务端处理完请求后,返回给客户端的不是 reply,而是 callback 请求。 打个比方,Reqeust/Reply 方式像是搓澡,1 个管搓,1 个被搓 打个比方,Reqeust/Reply 方式像是搓澡,1 个管搓,1 个被搓 而 duplex 像是拳击,两个人都会出拳 Duplex 模式对 Bindding 有特殊的要求,它要求支持 DuplexMEP(Message ExchangePattern), 如 WSDualHttpBinding 和 NetTcpBinding,有关 Binding的介绍请参见 /jillzhang/archive/2008/

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档