WCF行为学习

来源:互联网 发布:json转实体类 编辑:程序博客网 时间:2024/04/29 03:41

行为是WCF影响运行时操作的类。行为作为WCF运行时被调用,在客户端和服务端运行并作为消息在两者之间流转。因为行为运行在这些重要的时间,它们被用来实现很多WCF的内建特性。它们也是一个重要的自定义扩展点

  为了理解行为是如何使用的,有必要考虑运行时是如何初始化的。这是通过在客户端的ChannelFactory和在服务端的ServiceHost.这两个类都执行了类似的功能:

   1. 接收一个.NET类型作为输入而且读取它的属性信息。

   2. 从app.config 或者web.config 文件载入配置信息。在客户端,ChannelFactory主要查看绑定信息;在服务端,ServiceHost主要查看契约和绑定信息。

   3. 创建运行时环境结构,ServiceDescription.

   4. 开始通信。在客户端,ChannelFactory使用信道链接服务端;在服务端,ServiceHost打开信道并监听消息。

    在步骤1,行为信息在代码中以属性形式定义,如[ServiceBehavior(TransactionTimeout="00:00:30")].在步骤2,行为信息在配置文件中定义,如一个app.config文件中的<transactionTimeout="00:00:30">.在步骤3,ChannelFactory和ServiceHost类创建WCF运行时而且负责将步骤1和步骤2中找到的行为插入到运行时。也是在第3步,行为可以手动添加到服务模型,如Endpoint.Behaviors.Add(new MyBehavior())

   除了初始化,行为也可以在数据发送前或接收到以后操作数据。在客户端,行为可以用来执行三个函数:

   1. 参数检测。检测并/或改变数据的.NET表现形式,在数据被转换成XML前。

   2. 格式化消息。检测并/或改变数据当数据在.NET类型和XML间转换时。

   3. 消息检测。在数据被转成.NET类型前,检测并/或改变数据的XML表现形式。

   在服务端,行为可以用在两个额外的场景中:

   操作选择。在服务端,检测接收到的消息并确定应该调用哪个服务。

   操作调用。在操作层,调用类的方法。

(http://www.cnblogs.com/danielWise/archive/2010/11/30/1892476.html)

例子:

并发和实例(服务行为)

实现事务(操作行为)