自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

演示W(wǎng)CF設計模式之發(fā)布-訂閱

開發(fā) 后端
我們都知道設計模式的好處,在里就WCF設計模式發(fā)布-訂閱的原理分析一下,希望看過本文之后就可以熟練的運用這種設計模式。

一門好的語言它就要有一定的設計模式,在WCF這門技術中它也提供了許多種設計模式,有了設計模式在我們的應用中就會很方便,我們這里就WCF設計模式中的發(fā)布-訂閱模式分析一下吧。針對事件使用原來的雙向回調(diào)通常會引入發(fā)布者與訂閱者的高度耦合。訂閱者必須知道所有發(fā)布的服務在應用程序的位置,并連接它們。訂閱者不能識別的發(fā)布者無法通知事件的訂閱者。如果增加新的訂閱者(或者移除已經(jīng)存在的訂閱者)就會給已經(jīng)部署了的應用程序帶來困難。

#T#無論什么時候,對于應用程序的任何人發(fā)出的事件的一個特定類型,訂閱者都無法要求獲得通知。此外,訂閱者必須為每個發(fā)布者發(fā)出多個昂貴的調(diào)用,不管是訂閱還是取消訂閱。不同的發(fā)布者可能會觸發(fā)相同的事件,但卻為訂閱者和取消訂閱提供了略微不同的方法,自然而然給訂閱者與相關方法帶來耦合。大致相同的是,發(fā)布者只能通知它知道的訂閱者。無論是誰,如果希望接收事件,發(fā)布者都無法將消息傳遞給它,也沒有能力廣播事件。此外,所有的發(fā)布者都必須包含必要的代碼,管理訂閱者列表以及自身的發(fā)布行為。這些代碼幾乎與服務要解決的業(yè)務問題無關,如果還要提供一些高級特性,例如并發(fā)發(fā)布,就會增加相當大的復雜度。

而且,基于雙向的回調(diào)同樣會引入發(fā)布者與訂閱者生命周期的耦合度。為了訂閱和接收事件,必須運行訂閱者。訂閱者無法詢問事件是否被觸發(fā),而應用程序則需要創(chuàng)建一個訂閱者的實例,讓它處理該事件。安全性則代表了另外一種耦合:訂閱者需要通過各種安全模式以及使用的證書,以具備驗證所有發(fā)布者的能力。同時,發(fā)布者也需要具有足夠的安全證書,從而允許觸發(fā)事件,不同的發(fā)布者可能具有不同的角色成員機制。

最后,必須以編程方式設置訂閱信息。我們很難通過管理方式在應用程序中配置訂閱信息,或者在系統(tǒng)運行時,改變訂閱者的選項。這些問題實際上不是WCF雙向調(diào)用所特有的,過去的技術例如COM連接點或者.NET委托同樣具有這樣的特性。所有這些都屬于緊密耦合的事件管理機制。

WCF設計模式發(fā)布-訂閱

若要解決以上提及的問題,可以使用已知的發(fā)布-訂閱設計模式對它們進行設計。該模式所隱藏的含義很簡單:通過引入一個專門的訂閱服務,以及一個專門的發(fā)布服務,解除發(fā)布者與訂閱者之間的耦合,如圖所示。


 
  圖一個發(fā)布-訂閱系統(tǒng) 
 
圖一個發(fā)布-訂閱系統(tǒng)

需要訂閱事件的訂閱者注冊訂閱服務,該服務負責管理訂閱者列表,同時為取消訂閱提供了相似的功能。同樣,所有發(fā)布者均使用發(fā)布服務觸發(fā)它們的事件,避免將事件直接傳遞給訂閱者。訂閱和發(fā)布服務提供了一個間接層,從而解除了與系統(tǒng)之間的耦合。訂閱者不需要了解發(fā)布者的身份。它們能夠訂閱事件類型,以及接收任何發(fā)布者的事件,并且訂閱機制對于所有訂閱者都是統(tǒng)一的。事實上,發(fā)布者不需要管理任何訂閱列表,也不用關心訂閱者是誰。它們會將事件傳遞給發(fā)布服務,然后再傳遞給需要事件的訂閱者,上述就是一個WCF設計模式的一個簡單介紹。

責任編輯:田樹 來源: 博客
相關推薦

2010-03-02 16:28:11

WCF發(fā)布訂閱

2025-03-11 09:30:00

2010-07-05 12:09:16

SQL Server

2009-11-09 16:14:49

WCF服務元數(shù)據(jù)

2022-06-27 13:56:10

設計模式緩存分布式系統(tǒng)

2022-12-02 07:28:58

Event訂閱模式Spring

2021-08-02 17:21:08

設計模式訂閱

2009-11-09 13:12:14

WCF事物操作

2009-11-06 09:30:35

WCF服務框架

2023-11-10 09:22:06

2025-01-09 11:15:47

2010-03-02 13:43:01

WCF事務演示

2023-01-11 08:22:22

RabbitMQ通信模型

2009-11-05 16:34:37

WCF序列化

2020-08-21 07:23:50

工廠模式設計

2025-02-25 09:29:34

2009-11-06 15:02:47

WCF契約查詢

2009-11-05 09:35:54

WCF體系架構

2021-06-09 08:53:34

設計模式策略模式工廠模式

2012-02-29 09:41:14

JavaScript
點贊
收藏

51CTO技術棧公眾號