WCF Behaviors(行为)

WCF体系结构》中介绍了WCF各个组成部分,本章分多次详细介绍behaviors

Behaviors(行为)  定义WCF 客户端与服务端运行时的特性或配置,behaviors 不仅影响WCF 运行时,还会影响客户端与服务端之间的数据通信。

Behaviors 主要分为三类:

Service behaviors(服务行为):运行于服务级别,适用于所有端点,负责内容如:实例化、事务、授权、审计 等;

Endpoint behaviors(端点行为):适用于服务端点,负责对进出服务的消息进行审查和处理;

Operation behaviors(操作行为):适用于操作级别,负责如 序列化、事务流、参数处理等;

其他behaviors:

Callback behaviors 控制客户端创建端点,用于双工通信;

 

运行时初始化方式:在客户端由ChannelFactory初始化运行时,在服务端则有SerivceHost初始化运行时,执行功能如下:

  1. ChannelFactory 通过泛型方式接收CLR类型 ,ServiceHost 通过构造方式接受CLR类型,读取CLR类型属性及特性信息;
//ChannelFactory
DuplexChannelFactory channelFactory = new DuplexChannelFactory(stockContext, endpointName);
//ServiceHost
ServiceHost servcieHost = new ServiceHost(type);

此操作中,会分析作为代码定义的特性信息,如:

[ServiceBehavior(TransactionTimeout="00:00:30")]
  1. 从 app.config或web.config 文件加载配置信息,ChannelFactory 主要关注绑定信息,ServiceHost 主要关注契约和绑定信息;

分析配置文件中behavior定义,如:

  1. 构造运行时环境结构,即:ServiceDescription;

ChannelFactory 与 ServiceHost均构建了运行时,并将第1、2步中的行为插入到运行时中;

  1. 启动通信,ChannelFactory使用通道(信道)来连接服务,ServiceHost打开通道(信道)来监听消息。

 

在客户端,行为通常用来执行3种功能:

参数校验:在参数的数据转换为序列化之前,检验、修改 CLR形式的数据;

消息格式化:在CLR类型和序列化之间转换数据的过程中,检验、修改该数据;

消息校验:在转换成CLR类型之前,检验、修改该XML形式的数据。

在服务端,行为通常用于另外两种场景:

操作选择:在服务级别,检验入站消息并决定应该调用哪个操作;

操作调用:在操作级别,调用类的方法。

行为元素之间的控制流,图示:

行为控制流

posted @ 2011-09-25 16:12  JerryShi  阅读(753)  评论(0编辑  收藏  举报