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