剖析WFC框架具體內容
WFC框架集成開發環境包括許多新的和改進的用于提高工作效率的功能。IDE 還進行了重新設計,從而向開發人員提供對.NET Framework 組件的直接訪問。
在WCF中,我們可以給service contract指定callbackContract來進行回調, 而回調接口由客戶端實現。為了說明問題,我們設計了一個簡單的scenario。scenario description:假設WCF service提供簡單的AddTo(),即進行累積。客戶端通過proxy消費這個service并將計算結果發布到所有注冊了回調通道的其他客戶端。
回調接口設計如下:
- [ServiceContract(CallbackContract=typeo(ICaculatorCallBack),SessionModeSessionMode=SessionMode.Required)]
- public interface ICaculatorService
- {
- [OperationContract(IsOneWay=true)]
- void AddTo(int n); [OperationContract(IsOneWay=true)]
- void Register();
- }
回調接口和服務契約非常簡單,下面對serviceType作簡單說明:
關于AddEventHandler:
當客戶端調用AddTo這個服務的時候,服務器端開始計算,當計算完畢之后,然后開始廣播并且調用各個客戶端的回調實現。為了捕獲計算完畢這個動作,因此我們必須定義一種類型的事件句柄并且申明相應類型的事件,因此本例中我們定義了一種AddEventHandle類型的事件OnAddCompleted
OnAddCompleted事件觸發的時機:#t#
那么OnAddCompleted事件是什么時候觸發的呢?是在客戶端消費AddTo服務的時候。 WFC框架從AddTo implementation中我們可以看到:我們先將結算結果保存,并新建一個自定義事件,將計算結果保存至事件Args中,然后開始廣播該事件(BroadAddEvent)。廣播該事件的作用就是讓所有注冊了該事件(即消費了Register服務)的客戶端開始調用其事件處理程序(CaculatorService_OnAddCompleted)。在該事件處理程序中,然后開始調用客戶端的WFC框架。
這就是整個利用WFC框架機制進行廣播的過程。