天天看點

行為

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

行為