使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程

使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程

ID:44034717

大小:38.50 KB

页数:4页

时间:2019-10-18

使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程_第1页
使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程_第2页
使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程_第3页
使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程_第4页
资源描述:

《使命必达-深入剖析WCF的可靠会话[原理揭秘篇](下)-WCF技巧-WCF教程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使命必达:深入剖析WCF的可靠会话[原理揭秘篇](下)上面一部分我们站在信道层的角度剖析了WCF为了实现可靠会话在信道层进行的一系列消息交换,或者说客户端和服务端的RS信道为了实现可靠消息传输所进行一轮乂一轮的握手。这一切都是基于这样一个假设:两个RS信道均可以在适当的时机向对方发送消息,或者说两个RS信道之间是一个双工的通道。如果我们站在传输层看待这个问题,该假设对于TCP传输是成立的,但是对于HTTP來说就冇点问题了。HTTP本身就是一个基于请求

2、回复消息交换模式的应用层网络协议,并不能对双工通信提供支持。而

3、WCF通过WSDualllttpBinding实现的双工通信机制和NetTcpBinding支持的双工通信具冇本质的区别。NetTcpBinding创建的传输通道就是一个双工的TCP连接,而WSDualHttpBinding创建的所谓的双工通道实际上是两个方向相反的HTTP连接。接下来我们主要讨论当我们采用基于HTTP绑定——WSHttpBinding(或者是WS2007HttpBinding)和WSDualllttpBinding)时,实现可靠会话所进行的通信方式。一、WSHttpBindingV.S.WSDu

4、alHttpBinding如果采用WSHttpBinding,最终创建的是一条从客户端到服务端的HTTP通道。在这种情况下,客户端RS信道和服务RS信道之间的多轮握手(CreateSequence/CrcatcScqucnccRcsponsc、Sequence/ScqucnccAcknowlcdgcmcnt、CloseSequence/CloseSequence和TerminateSequence/TerminateSequenceResponse)均是采用这样的消息交换方式:客户端将相应的消息通过HTTP请求的

5、形式发送到服务端,相应的回复或者确认通过HTTP回复返回。图1揭示了上述的几次握手在传输层上的实现,其中实线部分代表HTTP请求,虚线部分代表HTTP回复。图1可靠会话基于通过WSHttpBinding创建的单通道的消息交换从图1中我们可以和清晰地看到,CreateSequence/CreateSequenceResponse、CloseSequence/CloseSequence和TerminateSequence/TerminateSequenceResponse完全是按照HTTP请求/HTTP回复的形式实现

6、的。在进行服务调用的时候,即使釆用的单向消息交换模式,发送应用消息的请求依然会接收到一个包含SOAP消息的HTTP回复。服务端通过将确认消息方法每一个HTTP回复之中。Z所以采用如上的方式的根本目的在于,WSIIttpBinding创建的传输层通道是从客户端到服务端的一条HTTP连接。HTTP连接是一条单工通道,客户端和服务端总是扮演者请求者和冋复者的角色,服务端不能主动联系客户端,此外无论是对RM序列创建、关闭和中指的回复,述是消息确认只能放在HTTP冋复中。但是,如果我们采用WSDualllttpBindin

7、g作为终结点绑定,情况就大不一样了。由于WSDualHttpBinding会创建两条HTTP连接构成一个所谓的双工通道,服务端可以随时联系到客户端,不需要将相应的回馈通过HTTP回复随带捎回去。借助于WSDualHttpBinding创建的双工通道,可靠会话的上述握手采用如下的消息交换方式:客户端通过HTTP请求将RM序列创建、终止请求以及携带Sequence报头的应用消息发送给服务端,并得到一个状态为202的空HTTP回复。而真正的回复和消息确认都通过另一个HTTP连接的HTTP请求返回给客户端的,而这些HTT

8、P请求通过会得到一个状态为202的空HTTP回复。图2是对可靠会话消息交换在传输层的反映。可能你会觉得这和我们上面介绍的WS-RM消息交换模式不一致,没有了CloseSequence/CloseSequence握手,对于TerminateSequence请求也没冇相应的TerminateSequenceResponse回复,这是因为WSDualHttpBinding支持的WS-RM版本是1.0,而不是我们上面介绍的1・1。除了上述的两点不同之前,还有一个不一样的地方:客户端在发送RM序列终止请求之前会发送一个携带

9、Sequence报头的空消息,而对于包含在该空消息小的Sequence报头,除了包含消息序号之外,还具冇一个额外的LastMessage元索表明这是RM序列终止前的最后一个消息。关于WS-RM1・0,限于篇幅的因素,在本书屮不可能再进行深入的介绍,冇兴趣的读者可以参阅OASIS官方文档。图2可靠会话基于通过WSDualHttpBinding创建的双通道的消息交换我们也可以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。