1、描述

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

2、行为使用


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

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

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

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

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

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

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

3、并发和实例

并发是一个多少个任务可以同时执行的度量,以任务(请求,工作,事务,以及类似的)的形式度量。执行时间是一个任务多长时间完成的度量,以时间(毫秒,秒,其他的时间单位等)度量。吞吐量是在一个指定时间里可以完成多少个任务的度量,以任务/时间(请求/秒, 事务/分,等等)的形式度量。吞吐量是关于并发和执行时间的函数

WCF有两种控制并发的行为: InstanceContextMode 和 ConcurrencyMode.

InstanceContextMode服务行为用来控制实例而且可以设置成以下三种值:

     Single. 服务类的一个实例处理所有接收到的请求。这实现了一个单例。

     PerCall. 为每个接收到的请求创建一个服务类的实例。

     PerSession. 每个客户端会话创建一个服务类实例。当使用不支持会话的信道时,所有的服务调用与PerCall一样,即便是InstanceContextMode被设置成PerSession.

ConcurrencyMode服务行为用来控制一个服务实例内部的线程并发。默认设置,ConcurrencyMode.Single,指导WCF在某一时刻旨在服务类的实例中执行一个线程。这个行为可以被设置成三个值之一:

    Single. 在一个时刻只有一个线程可以访问服务类。这是最安全的设置因为服务操作不必担心线程安全。

    Reentrant. 在一个时刻仅有一个线程可以访问服务类,但是这个线程可以离开类并在稍后返回继续。

    Multiple. 多个线程可以同步访问服务类。这个设置要求类创建在线程安全基础上。


 联合InstanceContextMode和ConcurrencyMode



行为_.net