分布式开发步步为赢请求应答单向操作(

上传人:lb2****090 文档编号:241886352 上传时间:2022-01-17 格式:DOCX 页数:8 大小:81.82KB
返回 下载 相关 举报
分布式开发步步为赢请求应答单向操作(_第1页
第1页 / 共8页
分布式开发步步为赢请求应答单向操作(_第2页
第2页 / 共8页
分布式开发步步为赢请求应答单向操作(_第3页
第3页 / 共8页
分布式开发步步为赢请求应答单向操作(_第4页
第4页 / 共8页
分布式开发步步为赢请求应答单向操作(_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《分布式开发步步为赢请求应答单向操作(》由会员分享,可在线阅读,更多相关《分布式开发步步为赢请求应答单向操作((8页珍藏版)》请在金锄头文库上搜索。

1、所属分类: , WCF除了支持经典的请求应答Request-Reply模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式。今天本节文章里会详细介绍。WCF分布式开发步步为赢(10):请求应答Request-Reply、单向操作(One-Way)、回调操作(Call Back).本文结构:【1】请求应答Request-Reply、【2】单向操作(One-Way)、【3】回调操作(Call Back)、【4】例如代码分析、【5】总结。最后上传本文的例如代码。 WCF除了支持经典的请求/应答模式意外,还提供了对单向操作、双向回调操作模式的支持,此外还有流操作后者

2、与WSE3.0提供的优化传输机制类似,我曾经在这个文章里进行过讲解 。今天我们会介绍几种操作调用模式的概念,区别,实现机制,以及如何在代码中实现他们,最后给出的要注意的细节问题。【1】请求应答Request-Reply: 请求应答模式是默认的操作模式。这与经典的C/S编程类似,客户端发送请求,阻塞客户端进程,效劳端返回操作结果。请求应答模式与绑定对应关系 :1. 绑定协议名称支持可靠性 默认可靠性 支持有序传递 请求应答模式 2. Basic Binding No N/A NoYes 3. NetTcpBinding YesOff YesYes 4. NetPeerTcpBindingNo N

3、/A No No 5. NetNamedPipeBinding No N/A (On) YesYes 6. WS Binding YesOff Yes Yes 7. WSFederation Binding YesOff Yes Yes 8. WSDual Binding Yes On YesYes 9. NetMsmqBinding No N/ANoNo 10. MsmqIntegrationBindingNoN/A No Yes 除了NetPeerTcpBinding和NetMsmqBinding绑定,所有的绑定均支持请求-应答操作。 【2】单向操作(One-Way):【2.1】概念: 简

4、单来说,单向操作没有返回值,客户端只管调用,不管结果。单向操作客户端一旦发出请求,WCF会生成一个请求,不会给客户端返回任何消息。单向操作不同于异步操作,虽然单向操作只是在发出调用的瞬间阻塞客户端,但如果发出多个单向调用,WCF会将请求调用放入队列,并在某个时候执行。队列存储调用的个数是有限的,一旦发出的调用个数超出了队列存储调用的设置值,那么会发生阻塞现象,因为调用无法放入队列。当队列的请求出列后,产生阻塞的调用就会放入队列,并解除对客户端的阻塞。绑定协议与单向请求模式关系: 绑定协议名称支持可靠性 默认可靠性 支持有序传递 单向模式 Basic Binding No N/A NoYes N

5、etTcpBinding YesOff YesYes NetPeerTcpBindingNo N/A NoYes NetNamedPipeBinding No N/A (On) YesYes WS Binding YesOff Yes Yes WSFederation Binding YesOff Yes Yes WSDual Binding Yes On YesYes NetMsmqBinding No N/ANoYes MsmqIntegrationBindingNoN/A No Yes 和请求应答模式不同。所有的WCF绑定通信协议都支持单向操作。 【2.2】实现方式: 配置单向操作的方式

6、也很简单,WCF的OperationContract 定义了IsOneWay属性。我们设置设置单向操作的方法是利用OperationContract特性的IsOneWay属性,例如: /操作契约,单调操作,不返回应答消息,会话效劳中,保证是最后一个操作OperationContract(IsOneWay=true,IsInitiating=false,IsTerminating=true)/voidSayHello2(stringname); 单向操作配置的属性定义在操作契约级别上。而不是用在效劳契约级别。【2.3】单向操作小节:1被设置为单向操作的方法不能包含返回值,即它的返回值只能为voi

7、d,否那么会抛出InvalidOperationException异常。2在会话契约中虽然允许定义单向操作ServiceContract( SessionMode =SessionMode.Required, Namespace = :/www blogs /frank_xl/),但由于单向操作效劳端管理客户端会话状态十分困难,因而,单向操作的最正确适用场景是在单调效劳或单例效劳中。如果在会话契约中定义了单向操作,就必须保证单向操作是终止会话的最后一个操作,返回void类型值。这可以通过分步操作来实现。代码如下:/1.单向效劳契约,会话效劳ServiceContract(SessionMode

8、=SessionMode.Required,Namespace= :/www blogs /frank_xl/)publicinterfaceIWCFServiceOneWay/操作契约,单调操作,不返回应答消息,会话效劳中,保证是最后一个操作OperationContract(IsOneWay=true,IsInitiating=false,IsTerminating=true)/voidSayHello2(stringname);/操作契约,OperationContractstringSayHello1(stringname);3如果因为通信地址宿主问题,调用操作失败,单向操作如果抛出异

9、常;客户端受效劳端异常影响,取决于实例模式以及使用绑定。 【3】回调操作(Call Back):【3.1】概念: 回调不是一个新的概念,早在C语言里就有过,C#里更是有委托实现回调机制。软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的效劳在收到某种讯息或发生某种事件时,会主动通知客户方即调用客户方的接口。回调和异步调用的关系非常紧密

10、,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的根底,因此,下面我们着重讨论回调机制在WCF软件架构中的实现。回调机制如下图: 并非所有的绑定协议都支持回调, 本质上是无连接的协议,TCP/IP协议才会在客户端和效劳端维持通信信道。两者之间的对应关系如下: 绑定协议名称支持可靠性 默认可靠性 支持有序传递 回调模式 Basic Binding No N/A NoNo NetTcpBinding YesOff YesYes NetPeerTcpBindingNo N/A NoNo NetNamedPipeBinding No N/A (On) YesYes WS Binding YesOff Yes

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号