消息訂閱、派送設計模式在“平臺-插件”式軟件架構設計中的應用

消息訂閱、派送設計模式在“平臺-插件”式軟件架構設計中的應用

 

1. 首先說明一下什麼是“平臺-插件”式的軟件設計。

顧名思義,“平臺-插件”就是先建立一個平臺提供底層的基本服務,以這個平臺爲基礎,在後續的開發中,直接以插件的方式插入這個平臺中,並且是可拔插的,需要時可以插上,不需要時可以拔掉,這樣的設計非常具有靈活性和可擴展性。

舉個例子說,我們的電腦硬件,就是一個非常優秀的“平臺-插件”設計的範例。在電腦中,主機板就是“平臺”,CPU,內存,硬盤,顯卡,聲卡,網卡。。。這一系列都是“插件”,有時候主板本身也固化了CPU,也就是把CPU的功能集成在平臺中。

 

2. 再來說明一下什麼是消息訂閱、派送模式。

這個模式很容易理解,舉個例子:家裏給廈門晚報社定了一份廈門晚報(訂閱),報社在每天傍晚安排員工將報紙送到家裏(派送)。而消息就好比這裏的報紙。

 

這種設計模式與一般的notify(通知)模式要區別一下,他是notify模式的一個限制版本,notify模式不需要訂閱,而只有派送,只在某個事件點將這個事件的消息發送給接收者。但接收者並不需要事先訂閱,或者說這個訂閱的動作並不是一定由接收者預先執行。而消息訂閱、派送設計模式要求消息接收者必須先訂閱,有訂閱纔有發送,就像報社不會無緣無故的把報紙送到你家一樣。

 

3. 實現原理

在以“平臺-插件”的設計理念中,消息訂閱、派送設計模式非常有用,它最主要的作用是可以大大的降低耦合度,低耦合度本身就帶來非常多的好處,諸如效能,可維護性,可擴展性。因此,對我來說,低耦合,接口標準、統一,即插即用是我在軟件設計上始終追求的目標。

 

有了以上的說明,應該已經使我們對“平臺-插件”和消息訂閱、派送這兩個概念有了一個比較感官的,清楚的認識。那麼,下一步,我們該怎麼設計這個系統呢?

這裏需要在引入幾個概念:接口、事件、消息。

 

接口,就是平臺與插件直接的交互口。在這裏需要包括插件提供的用於平臺向插件發送消息的接口,以及由平臺提供的用於插件向平臺發送訂閱的接口。這個接口再往程序設計上具體化一點,就可以理解爲多數OOP語言都支持的語法元素:接口(interface)。

 

事件:指的是發生在平臺上一系列事件,比如系統啓動,初始化,用戶事件,系統關閉。

 

消息:在這裏即是代表特定事件一個說明串。

 

平臺在這些事件發生的時候,通過查詢相應的事件訂閱列表中的插件,並將該事件所對應的消息通過插件提供的接口發送給插件。插件收到這些消息的時候就可以執行相應的動作。

 

4. 結語

通過以上的說明,我們基本上對“平臺-插件”設計理念結合消息訂閱、派送設計模式有了一個比較清楚的瞭解。在一個系統設計工作中,這是已被證明的非常重要和有效的兩種設計手段。當然一個好的系統,除了要有了好的設計思想和理論,還需要有務實的行動去實踐,一個架構師或設計師的工作需要很多個開發、測試工程師在這個架構上的實踐和驗證,經過不斷考驗和磨礪出來的架構,纔是一個好的架構。所以一個優秀的架構師或設計師除了要有精湛的研發技術和豐富的設計經驗以外,還需要有一顆謙虛的、願意聽取意見的心,須具有很好的團協作精神和團隊協作能力。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章