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