第三章 信道-操作契约和信道形状

来源:互联网 发布:java filter 原理 编辑:程序博客网 时间:2024/06/05 19:25

信道通过信道形状来完成它们所支持的多种类型消息交换模式。比如,一个基于TCp的传输信道将会实现IInputChannelIOutputChannel,因为这些通道都是固有单向的。其他的传输信道基于其他协议比如TCP可能需要实现多个信道形状。开发人员不直接与信道形状打交道。对应的,WCF选择一个服务的基于OperationContract的信道形状。表3.1列出了多个你可以在OperationContract上设置的影响信道形状结果的属性。注意大多数信道形状有一个无状态的(默认)和会话感知变量。会话感知信道从客户端传输一个识别标识给服务端。这可以用来维护客户端和服务端的状态。就像ASP.NET中的状态管理那样。WCF内建没有状态管理特性,但是你可以使用实例化的会话来管理状态。实例管理会在第五章行为中描述。

3.1 基于OperationContract属性的信道形状

并不是所有的信道实现了每一个接口。如果下面的信道不支持一个特别的信道形状,WCF讲试着使用一个已存在的信道形状来满足它的需求。比如,如果一个信道没有为单向通信实现IInputChannelIOutputChannel接口,WCF将会试着用IRequestChannel/IReplyChannel来替代。

信道监听器

信道监听器在WCF中形成服务端通信的基础。它们用来监听请求消息,创建信道栈,提供对应用程序栈顶的引用。它们从传输信道或者信道栈中的底层信道接收消息。大部分开发人员不会直接使用信道监听器。他们使用ServiceHost来寄宿服务,ServiceHost使用一个信道监听器来监听消息。更多关于ServiceHost的细节请查看第七章寄宿。列表3.5显示了一个被创建的用来接收消息的信道监听器。绑定中的BuildChannelListener方法创建一个基于特殊信道形状的信道监听器。在这个例子中我们使用BasicHttpBindingIReplyChannel形状。

列表3.5 使用一个信道监听器


 

信道工厂

一个信道工厂创建一个发送消息的信道并维护它创建的信道的所有权。大多数开发人员不会直接使用一个信道工厂。对应的,他们会使用一个继承自ClientBase<>的类,通常由svcutil.exe 或者在Visual Studio中添加服务引用生成。然后,理解信道工厂是很重要的因为它们在WCF中构建客户端通信的基础。

提示 信道工厂拥有它们的信道

信道监听器和信道工厂一个重要的差异是信道工厂负责关闭所有关联信道;信道监听器不是。这样的区别是为了信道监听器可以独立于它们的信道之外被关闭。

列表3.6 显示了使用一个信道工厂来调用一个服务的例子。这是对应于列表3中的服务端而是用的客户端。代码使用绑定的CreateChannel方法来创建一个新信道。

列表3.6 使用信道工厂。


 

ChannelFactory<>

WCF中由两个类引用信道工厂:ChannelFactoryChannelFactory<>.它们可能看起来很类似,但是它们实际上是做不同事情的类。ChannelFactory<>类用在需要创建多个客户端的高级情况中。实质上它与一个给定的ChannelFactory一起工作,但是它不负责创建一个信道栈。ChannelFactory<>类通过一个特殊的ServiceContract类型来定义类。列表3.7显示了使用ChannelFactory<>类调用一个实现了IStockQuoteService 接口的服务。

提示 使用指导和ChannelFactory<>

当使用using语句来关闭ChannelFactory时要仔细。列表3.7显示了一个在服务调用过程中使用try…catch以便于服务中的错误可以被知道的最好的方法。如果我们不适用try…catch,任何异常都会从using语句中抛出。在那个时候信道工厂将会抛出一个异常,因为它被关闭了。这将会标记处之前服务调用时所出的错误。我们使用两个try…catch快以便于我们可以捕获任何服务调用抛出的错误。

 列表3.7 使用ChannelFactory<>


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 工作中遇到不公待遇怎么办 老兵丢了退伍证怎么办 我的退伍证丢了怎么办 退伍证丢了怎么办啊 银行卡更换之前的卡号怎么办 收到联通欠费催款律师函怎么办 苹果5s玩王者卡怎么办 电信宽带包年用户欠费怎么办 员工不处理考勤异常怎么办 移动号码特殊原因强制停机怎么办 下雨天我怎么办我好想你 免检标志领晚了怎么办 激光点太田痣揉搓了泛红怎么办 花束与衣服颜色相称怎么办 吃鸡狙击枪距离怎么办 环世界敌人炸墙怎么办 水阀断在墙里面怎么办 内陷螺丝扣秃了怎么办 五菱仪表盘不亮怎么办 瞒着老婆欠了钱怎么办 m8螺丝牙距孔距差一个毫米怎么办 内丝弯头坏了怎么办 螺纹底孔打大了怎么办 内螺纹止规过了怎么办 牌照螺丝装错了怎么办 帽式扳手大了怎么办 内六角扳手小了怎么办 内六角扳手不够大怎么办? 苹果6螺丝拧花了怎么办 苹果电脑螺丝拧花了怎么办 苹果螺丝滑牙了怎么办 苹果7螺丝滑丝了怎么办 外六角螺丝滑牙怎么办 六角螺帽滑丝了怎么办 内六角螺丝滑头了怎么办 内六角螺丝滑失了怎么办 内六角螺钉滑了怎么办 三视图看不出来怎么办 小猫断奶以后母猫涨奶怎么办 手机螺丝滑丝了怎么办 螺丝孔道滑丝了怎么办