從Spring ioc中引申出的一句話是比較經(jīng)典的:別來找我,在那等著,我會去找你。
被動模式,與這個概念很相近:別把東西給我,告訴我在哪能取到它。
被動模式可以理解為三種模式: 開發(fā)模式, 部署模式,云模式。
一. 開發(fā)模式
實(shí)際上在我們的代碼開發(fā)中,就一直在使用這種開發(fā)模式,例如

class ClassB
{ InterfaceA ref = createInterfaceA(); }
使用create方法,而不是直接new。也就是說告訴了ClassB,在create方法中獲得InterfaceA.
這是一個很簡單的例子,受它直接影響的,是系統(tǒng)的擴(kuò)展性。在一個可擴(kuò)展(伸縮)的系統(tǒng)中,例如在Eclipse產(chǎn)品程序,或是基于可插拔模塊的應(yīng)用程序開發(fā)中,則是隨處可見的被動應(yīng)用模式,這樣的系統(tǒng),對于現(xiàn)有組成部分在開發(fā)過程中很容易解決,但是對于未知組成部分(擴(kuò)展性),只能通過被動模式解決,例如Extwind,在基于osgi的web應(yīng)用程序中,Dynamic IoC和Extension-Point所做的事。
二. 部署模式
目前web應(yīng)用程序的部署,可以總結(jié)為這樣一句話:需要部署的時候就來找我,別忘了把東西帶上!
這與現(xiàn)在的服務(wù)理念完全相悖,快遞公司都有上門取貨這項服務(wù)。
如果以開發(fā)模式來看,這就屬于 Deploy deploy = new FixedDeploy() ,而不是getDeploy()。
這是一種陳舊的部署模式,毫無擴(kuò)展性和伸縮性,它讓很多原本簡單的事情變得很復(fù)雜,雖然這是一種部署模式,但是它將影響到后來的架構(gòu)模式。
Extwind的部署模式:需要部署的時候,給我個電話,告訴我東西在哪,我去取。
這個“電話”就是一個部署描述符(Deploy Description),它描述了部署方式,應(yīng)用程序或模塊的存放地(Repository)等細(xì)節(jié),Extwind通過這個描述符從指定的Repository中獲取應(yīng)用程序并部署。
如果以面向?qū)ο髞砜此梢詫⑦@個描述符理解為一個interface,它將影響到部署模式的擴(kuò)展性和伸縮性。
Extwind中的repository與maven中的repository很像,對于它的定義,主要有2個方面:
1. 組件庫,這可以通過maven來幫助完成
2. 部署庫,由應(yīng)用程序生成的受支持的部署庫,部署時,只需要將描述符指向該庫或庫中的某些組件。
三. 云模式
用一個例子來理解云模式:
新增一臺386,可以為云增加1%的計算能力;
新增一個集群環(huán)境,可以為云增加20%的計算能力;
這里的計算能力就是一種資源,可以理解為服務(wù)能力。之前提到過,對于未知資源,只能通過被動模式來獲取,Extwind將會通過云模式來提供可伸縮的服務(wù)環(huán)境。
Extwind要做的事情只有一件:讓原本簡單的事情,不要太復(fù)雜。
posted on 2009-07-02 15:24
Phrancol Yang 閱讀(357)
評論(0) 編輯 收藏