天天看點

[WCF-Discovery]讓服務自動發送上/下線通知[執行個體篇]

我們采用如右圖所示的解決方案結構,其中Service.Interface、Service(控制台程式)和Client(控制台程式),用于用于定義服務契約、服務類型(服務寄宿)和用戶端監聽程式。并且直接使用我們熟悉的CalculatorService。現在我們為該服務的寄宿定義如下一段配置。我們定義了一個包含ServiceDiscoveryBehavior行為的預設服務行為,并且一個UdpAnnouncementEndpoint終結點被添加到了ServiceDiscoveryBehavior的AnnouncementEndpoints集合之中。

然後通過如下一段簡短的代碼對CalculatorService進行寄宿,與之前的不同之處在于輸出了一段程式退出的提示性文字。當服務寄宿程式啟動後輸入任何字元,服務将會被關閉(離線)。

接下來我們需要在用戶端通過寄宿AnnouncementService服務來監聽CalculatorService服務啟動和關閉自動發出的通知。我們先通過如下所示的一段配置為寄宿的AnnouncementService添加一個UdpAnnouncementEndpoint終結點。

AnnouncementService服務通過如下的代碼進行寄宿。由于AnnouncementService被定義成一個單例服務,我們就可以直接針對一個預先建立好的AnnouncementService執行個體來建立用于服務寄宿的ServiceHost。在服務開啟之前,我們注冊了AnnouncementService的OnlineAnnouncementReceived和OfflineAnnouncementReceived兩個事件,在它接收到目标服務上/下線通知的時候會輸出目标服務終結點的位址和契約名稱。

用戶端和服務端所有的配置和編碼工作完成之後,先啟動用戶端開啟通知監聽服務。然後開啟服務端啟動服務CalculatorService,最後輸入任意鍵(不要直接關閉控制台視窗)退出服務端程式。此時你會發現用戶端的控制台上具有如下的輸出。這段文字的第一部分代表CalculatorService啟動的時候(ServiceHost的Open方法被執行之後)發出的上線通知,後一部分代表服務關閉(ServiceHost的Dispose方法執行之後)發出的離線通知。

作者:蔣金楠 

微信公衆賬号:大内老A

如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識别二維碼)關注個人公衆号(原來公衆帳号蔣金楠的自媒體将會停用)。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

<a href="http://www.cnblogs.com/artech/archive/2011/10/25/2223637.html" target="_blank">原文連結</a>