WCF發布訂閱實質內容剖析
WCF開發工具中,有一種比較重要的設計模式,叫做WCF發布訂閱模式。對于初學者來說掌握這一模式可能還是一件比較困難的事情。下面就讓我們一起看看他的一些基礎內容,從而初步了解WCF發布訂閱的基本概念。#t#
WCF發布訂閱設計模式
我們可以使用已知的發布-訂閱設計模式對一些特定的功能進行設計。該模式所隱藏的含義很簡單:通過引入一個專門的訂閱服務,以及一個專門的發布服務,解除發布者與訂閱者之間的耦合,如圖B-1所示。
圖B-1 一個WCF發布訂閱系統
需要訂閱事件的訂閱者注冊訂閱服務,該服務負責管理訂閱者列表,同時為取消訂閱提供了相似的功能。同樣,所有發布者均使用發布服務觸發它們的事件,避免將事件直接傳遞給訂閱者。訂閱和發布服務提供了一個間接層,從而解除了與系統之間的耦合。訂閱者不需要了解發布者的身份。它們能夠訂閱事件類型,以及接收任何發布者的事件,并且訂閱機制對于所有訂閱者都是統一的。事實上,發布者不需要管理任何訂閱列表,也不用關心訂閱者是誰。它們會將事件傳遞給發布服務,然后再傳遞給需要事件的訂閱者。
WCF發布訂閱者類型
我們甚至可以定義兩種類型的訂閱者:臨時訂閱者是在內存中運行的訂閱者;持久訂閱者則是持久化到磁盤的訂閱者,它們代表了服務對發生事件的調用時間。對于臨時訂閱者,可以使用雙向回調機制,通過它將回調引用傳遞到正在運行的服務。持久訂閱者則需要將訂閱者地址當作引用進行記錄。當事件發生時,發布服務會調用持久訂閱者的地址,然后將事件傳遞給它。兩種訂閱類型還有另外一個顯著區別,就是我們可以將持久訂閱者存儲在磁盤或數據庫中。這樣就能夠在關閉應用程序或機器崩潰或重啟的時候,持久化訂閱者。這一過程允許以管理方式對訂閱進行配置。顯然,在關閉應用程序時,我們不能存儲臨時訂閱,而需要在每次應用程序啟動時,明確地創建臨時訂閱。