實現(xiàn)松耦合了。 那就有可能設(shè)計一種軟件框架:它能夠為每個部件提供非常棒的服務(wù)訪問,軟件組件是 松耦合loosely coupled,這些組件的大部分通過幾行代碼就可以實現(xiàn)替換。目前這種方便的實現(xiàn)方式是使用XML進行組件的配置。 JdonFramework/Spring都是這樣的一種框架,JdonFramework更進步的是:JF框架本身的組件也是可以替換的,例如你希望在JF中使用Spring的配置文件,那么你只要做一個Spring配置文件的解析組件,然后替換JF框架原來的XML解析器就可以了。無論EJB2/EJB3等在這方面要稍遜于Ioc/AOP框架,對于支持EJB3的JBoss 4 這樣架構(gòu),需要動態(tài)更換AOP攔截器還不是很方便,因為JBoss 4本身組件沒有象JF那樣做到可插拔配置,不過,JBoss 5已經(jīng)開始走上這條路,使用一個微核心來管理所有的可插拔組件,我曾經(jīng)在"JBoss 5迎來中間件徹底的可配置時代"一文中提出組件是否方便替換是衡量一個組件框架的重要指標。 在最近的TheServerSide文章Service Access to the software components中,主要是談?wù)摿吮憩F(xiàn)層組件的替換訪問方式,GIF這樣圖片組件不可以隨意控制調(diào)整,基本不能復(fù)用,但是通過SVG或XUI等支持XML組件動態(tài)替換技術(shù)的使用,則可以實現(xiàn)顯示圖形組件的復(fù)用。
SOA
在軟件運行時,給予用戶動態(tài)插拔式更換組件,達到復(fù)用的組件更加適合變化的需求,這是軟件業(yè)追求的目標,而SOA(Service Oriented Architecture)則是從另外一種方向也是在運行時提供用戶一種改變系統(tǒng)的能力。 SCBA(Services and Components Based Architecture), SCBA是通過減少需求變化帶來的傳遞損耗和時間來實現(xiàn)的,當(dāng)需求變化時,SOA的服務(wù)將支持跟進變化和替換。 SCBA更強調(diào)的是一種業(yè)務(wù)過程重用,而且是跨組織跨多個專業(yè)域范圍的,例如我以前說的四色圖實際是對跨域范圍的業(yè)務(wù)總結(jié),特別是ERP域范圍,大多數(shù)企業(yè)系統(tǒng)都是由MI等四種原始模型組成的,例如JiveJdon3看上去只是一個論壇系統(tǒng),實際不只是,它的Message模型可以重用在網(wǎng)站內(nèi)容系統(tǒng)、新聞發(fā)布系統(tǒng)、電子商務(wù)系統(tǒng)、倉庫管理系統(tǒng)、資源管理系統(tǒng)等跨域范圍中(部分已經(jīng)實現(xiàn))。 既然業(yè)務(wù)過程和IT系統(tǒng)可以跨組織跨域重用,那么類似軟件系統(tǒng)的維護和開發(fā)就不必再重新開發(fā),JiveJdon3的Message模型重用在新聞發(fā)布系統(tǒng)中,我需要把JiveJdon3的項目拷貝到新聞發(fā)布系統(tǒng)中,然后再針對新聞發(fā)布系統(tǒng)特點做些裁剪修改,這這種復(fù)制業(yè)會帶來工作量和維護量,而SCBA則可以解決這個問題,通過運行時single-copy reuse分享各種服務(wù)功能。 更多SOA重用可參考“Service Component White Paper”一文。
總結(jié)
本文總結(jié)了軟件復(fù)用的不同層次:設(shè)計復(fù)用、組件架構(gòu)復(fù)用以及業(yè)務(wù)模型復(fù)用,復(fù)用技術(shù) 的不斷發(fā)展正是由于適應(yīng)變化需求的要求不斷提高導(dǎo)致,本人從2002年開始從事復(fù)用技術(shù)研究,最初從復(fù)用層次底層設(shè)計模式開始,在國內(nèi)媒體第一次全面分析了GoF設(shè)計模式(其中個別模式當(dāng)時被天極網(wǎng)轉(zhuǎn)載), 經(jīng)過這幾年發(fā)展,親身體會復(fù)用技術(shù)已經(jīng)進入了一個新的階段。特寫此文作為小結(jié)。
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html