引言
網(wǎng)絡(luò)計(jì)算帶領(lǐng)軟件產(chǎn)業(yè)進(jìn)入了一個(gè)新的時(shí)代,商機(jī)無限,但同時(shí)挑戰(zhàn)也無限。以電子商務(wù)為代表的技術(shù)潮流正將大到企業(yè)計(jì)算、小到個(gè)人數(shù)字代理的各種應(yīng)用,在世界范圍內(nèi)聯(lián)結(jié)起來,軟件制造業(yè)正面臨著一些新的課題,如復(fù)雜的分布環(huán)境、靈活的應(yīng)用模式、廣泛的包容性等,傳統(tǒng)的軟件設(shè)計(jì)思想已遠(yuǎn)遠(yuǎn)不夠。
在這一背景下,構(gòu)件技術(shù)應(yīng)運(yùn)而生,并逐漸炙手可熱。不同于oo技術(shù)強(qiáng)調(diào)對(duì)個(gè)體的抽象,構(gòu)件則更推廣了對(duì)象封裝的內(nèi)涵,側(cè)重于復(fù)雜系統(tǒng)中組成部分的協(xié)調(diào)關(guān)系,強(qiáng)調(diào)實(shí)體在環(huán)境中的存在形式,形成一個(gè)專門的技術(shù)領(lǐng)域。
中間件作為存在于系統(tǒng)軟件與應(yīng)用之間的特殊層次,抽象了典型的應(yīng)用模式,從而使應(yīng)用軟件制造者可以更多地將思路放在業(yè)務(wù)邏輯中,并基于標(biāo)準(zhǔn)的形式進(jìn)行開發(fā),這樣就使軟件構(gòu)架化成為可能。一些工業(yè)標(biāo)準(zhǔn)的推出,進(jìn)一步使中間件成為可復(fù)用構(gòu)件的運(yùn)行框架,加速了軟件復(fù)用的現(xiàn)實(shí)化進(jìn)程。
本文從構(gòu)件在現(xiàn)實(shí)軟件發(fā)展中的地位展開,分析了中間件在系統(tǒng)組織層次中所起的作用,闡述了構(gòu)件化思想對(duì)中間件本身的促進(jìn)作用,提出了一種構(gòu)件化中間件的發(fā)展模式。
構(gòu)件技術(shù)的基本思想
oo技術(shù)是在"數(shù)據(jù)+算法"的基礎(chǔ)上提升了對(duì)事物的認(rèn)識(shí)方法,對(duì)象的概念符合人們認(rèn)識(shí)世界的習(xí)慣。而構(gòu)件的思想則更多地將重點(diǎn)從建模本身發(fā)展到對(duì)軟件生產(chǎn)的考慮,即構(gòu)件可以在應(yīng)用領(lǐng)域的軟件生產(chǎn)中作為零件納入新的體系中被重用。因此,構(gòu)件是oo思想的沿襲和擴(kuò)展,認(rèn)識(shí)事物的角度從對(duì)象個(gè)體本身上升到個(gè)體在群體中的作用。
構(gòu)件有幾個(gè)基本屬性:
1、構(gòu)件是可獨(dú)立配置的單元,因此構(gòu)件必須自包容。
2、構(gòu)件強(qiáng)調(diào)與環(huán)境和其他構(gòu)件的分離,因此構(gòu)件的實(shí)現(xiàn)是嚴(yán)格封裝的,外界沒機(jī)會(huì)或沒必要知道構(gòu)件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。
3、構(gòu)件可以在適當(dāng)?shù)沫h(huán)境中被復(fù)合使用,因此構(gòu)件需要提供清楚的接口規(guī)范,可以與環(huán)境交互。
4、構(gòu)件不應(yīng)當(dāng)是持續(xù)的,即構(gòu)件沒有個(gè)體特有的屬性,理解為構(gòu)件不應(yīng)當(dāng)與自身副本區(qū)別,在任
何環(huán)境中,最多僅有特定構(gòu)件的一份副本。
可以看出,構(gòu)件沿襲了對(duì)象的封裝特性,但同時(shí)并不局限在一個(gè)對(duì)象,其內(nèi)部可以封裝一個(gè)或多個(gè)類、原型對(duì)象甚至過程,結(jié)構(gòu)是靈活的。構(gòu)件突出了自包容和被包容的特性,這就是作為軟件生產(chǎn)線上作為零件的必要特征。
構(gòu)件技術(shù)的關(guān)鍵點(diǎn)涉及構(gòu)件做什么、構(gòu)件交互的規(guī)則、構(gòu)件存在的環(huán)境等,相應(yīng)在現(xiàn)實(shí)中有各種支撐性的技術(shù),如:
1、構(gòu)件模型,研究構(gòu)件的本質(zhì)特征及構(gòu)件間的關(guān)系;
2、構(gòu)件描述語言,以構(gòu)件模型為基礎(chǔ),解決構(gòu)件的精確描述、理解和組裝問題;
3、構(gòu)件分類與檢索,研究構(gòu)件的分類策略、組織模式及檢索策略,建立構(gòu)件庫系統(tǒng),支持構(gòu)件的有效管理;
4、構(gòu)件復(fù)合組裝,包括源代碼級(jí)的組裝和基于構(gòu)件對(duì)象互操作性的運(yùn)行級(jí)組裝;
5、標(biāo)準(zhǔn)化,包括構(gòu)件模型的標(biāo)準(zhǔn)化和構(gòu)件庫的標(biāo)準(zhǔn)化;
6、軟件構(gòu)架,研究如何快速、可靠地應(yīng)用可復(fù)用構(gòu)件系統(tǒng)進(jìn)行系統(tǒng)構(gòu)造的方式,著重于軟件系統(tǒng)自身的整體結(jié)構(gòu)和構(gòu)件間的互聯(lián)。
中間件:構(gòu)件存在的基礎(chǔ)
構(gòu)件技術(shù)在最初時(shí)更多是作為一種思想存在,進(jìn)而才在一些關(guān)鍵的環(huán)節(jié)上發(fā)展出解決問題的技術(shù)分支。構(gòu)件的存在某種程度上極大地依賴了構(gòu)架技術(shù),或環(huán)境、基礎(chǔ)設(shè)施、計(jì)算平臺(tái),只有在適當(dāng)?shù)臉?gòu)架中,軟件才有可能被抽象和隔離,最終成為構(gòu)件。因此,單獨(dú)討論構(gòu)件是抽象而空洞的。構(gòu)架不是操作系統(tǒng)、數(shù)據(jù)庫或網(wǎng)絡(luò)協(xié)議,也不完全是應(yīng)用,而是在某種特定意義上的構(gòu)件運(yùn)行容器,層次上界于應(yīng)用和基礎(chǔ)設(shè)施之間。
中間件,從本質(zhì)上是對(duì)分布式應(yīng)用的抽象,因而拋開了與應(yīng)用相關(guān)的業(yè)務(wù)邏輯的細(xì)節(jié),保留了典型的分布交互模式的關(guān)鍵特征。經(jīng)過抽象,將紛繁復(fù)雜的分布式系統(tǒng)經(jīng)過提煉和必要的隔離后,以統(tǒng)一的層面形式呈現(xiàn)給應(yīng)用。應(yīng)用在中間件提供的環(huán)境中可以更好地集中于業(yè)務(wù)邏輯上,并以構(gòu)件化的形式存在,最終自然而然地在異構(gòu)環(huán)境中實(shí)現(xiàn)良好的協(xié)同工作。
不難看出,中間件與構(gòu)架實(shí)際是從兩種不同的角度看待軟件的中間層次,可以這樣說:中間件就是構(gòu)架,或構(gòu)件模型的具體實(shí)現(xiàn),是構(gòu)件軟件存在的基礎(chǔ),中間件促進(jìn)了構(gòu)件化軟件。從下面列舉的一些中間件的特征,可以看出,中間件與構(gòu)架本質(zhì)上是一致的。
面向需求的構(gòu)件應(yīng)用
基于構(gòu)架的構(gòu)件化軟件開發(fā)應(yīng)當(dāng)是面向需求的,即設(shè)計(jì)者集中精力于業(yè)務(wù)邏輯本身,而不必為分布式應(yīng)用中的通信、效率、互操作、可靠性、容錯(cuò)性、完整性等大量與業(yè)務(wù)無直接關(guān)系但又非常重要的問題,而耗費(fèi)大量的精力,理想的構(gòu)架在這些方面應(yīng)當(dāng)為構(gòu)件軟件提供良好的運(yùn)行環(huán)境。事實(shí)上,這些正是中間件所要解決的問題,因此,基于中間件開發(fā)的應(yīng)用真正是面向需求的,從本質(zhì)上符合構(gòu)件化設(shè)計(jì)的思想。
使業(yè)務(wù)邏輯容易劃分
服務(wù)器構(gòu)件要求有很好的業(yè)務(wù)自包容性,應(yīng)用開發(fā)者可以按照不同的業(yè)務(wù)進(jìn)行功能的劃分,體現(xiàn)為不同的接口或交互模式。針對(duì)每種業(yè)務(wù)的設(shè)計(jì)和開發(fā)是可以獨(dú)立進(jìn)行的。
構(gòu)架和中間件有同樣的目標(biāo):提供業(yè)務(wù)的分隔和包容性。例如:消息中間件規(guī)定了消息是有屬性的,其中部分屬性則與業(yè)務(wù)的劃分有關(guān),某種服務(wù)構(gòu)件只進(jìn)行相應(yīng)類型的消息交互。至于如何保證業(yè)務(wù)的分類運(yùn)行與管理,則是中間件的事情。
因此可以說,中間件和構(gòu)架都實(shí)現(xiàn)了構(gòu)件向應(yīng)用的集成。
構(gòu)件的封裝、設(shè)計(jì)與實(shí)現(xiàn)隔離
構(gòu)件對(duì)外發(fā)生作用或構(gòu)件間的交互,都是通過規(guī)范定義的接口進(jìn)行,構(gòu)件使用者只需要知道構(gòu)件的接口,而不關(guān)心其內(nèi)部實(shí)現(xiàn),這是設(shè)計(jì)與實(shí)現(xiàn)分開的關(guān)鍵。構(gòu)架就應(yīng)當(dāng)提供構(gòu)件交互的規(guī)則,并基于這些規(guī)則實(shí)現(xiàn)類似容器的標(biāo)準(zhǔn)環(huán)境。
中間件在分布交互模式上都規(guī)定了接口(或類似)機(jī)制,如idl就是描述接口的語言規(guī)范,從早期的dce到現(xiàn)在的corba、dcom、java rmi等都使用idl描述接口,所不同的只是語言規(guī)范??蛻粼L問服務(wù)(或?qū)ο蠓椒ǎ┚ㄟ^接口進(jìn)行,至于服務(wù)采用怎樣的內(nèi)部實(shí)現(xiàn)、基于怎樣的語言、甚至怎樣的操作系統(tǒng)、數(shù)據(jù)庫,開發(fā)者都不用關(guān)心。類似地,消息隊(duì)列也可作為分布交互的手段,消息的語法和語義定義保證了使用與實(shí)現(xiàn)的分離,使用消息隊(duì)列的客戶或服務(wù)是不依賴于對(duì)方的。既然中間件能隔離設(shè)計(jì)與實(shí)現(xiàn),能在分布的環(huán)境中封裝實(shí)現(xiàn)的細(xì)節(jié),那么,基于中間件的構(gòu)件開發(fā)也就是可能的。
隔離應(yīng)用構(gòu)件與復(fù)雜系統(tǒng)資源
構(gòu)架很重要的一個(gè)功能就是將系統(tǒng)資源與應(yīng)用構(gòu)件隔離,這是保證構(gòu)件可重用甚至"即插即用"的基礎(chǔ),與中間件的意圖同樣是一致的。中間件最大的優(yōu)勢之一就是屏蔽多樣的系統(tǒng)資源,保證良好的互操作性。應(yīng)用構(gòu)件開發(fā)者只需要按照中間件規(guī)定的模式進(jìn)行設(shè)計(jì)開發(fā),不必考慮下層的系統(tǒng)平臺(tái)。因此可以說,中間件真正提供了與環(huán)境隔離的構(gòu)件開發(fā)模式。
符合標(biāo)準(zhǔn)的交互模型
構(gòu)架不是什么具體軟件,而是抽象的模型,但模型中應(yīng)當(dāng)定義一些可操作的成分,如標(biāo)準(zhǔn)的協(xié)議。標(biāo)準(zhǔn)的中間件則實(shí)現(xiàn)了構(gòu)架的模型,實(shí)現(xiàn)了標(biāo)準(zhǔn)的協(xié)議,如基于corba的對(duì)象中間件使用的是corba規(guī)范作為構(gòu)架模型,具體則實(shí)現(xiàn)了可互操作的giop協(xié)議,映射到tcp/ip為iiop協(xié)議,定義了cdr數(shù)據(jù)表示語法、數(shù)據(jù)包格式、消息語義等內(nèi)容。因此,基于中間件的構(gòu)件是符合標(biāo)準(zhǔn)模型的。
軟件重用
軟件重用是構(gòu)件化軟件生產(chǎn)的根本目標(biāo)之一,中間件提供了構(gòu)件封裝、構(gòu)件交互規(guī)則、構(gòu)件與環(huán)境的隔離及構(gòu)架設(shè)施等機(jī)制,這些都為軟件重用提供了方便的解決方案。
另外,通過類似應(yīng)用橋的機(jī)制,中間件可以建立訪問過去應(yīng)用的通道;或者在新的中間件體系中建立特殊的運(yùn)行容器,封裝以往的應(yīng)用,從而最終做到對(duì)應(yīng)用遺產(chǎn)的繼承性重用。
提供對(duì)應(yīng)用構(gòu)件的管理
基于中間件的構(gòu)件軟件可以方便地進(jìn)行管理,因?yàn)闃?gòu)件總可以通過方便的標(biāo)識(shí)機(jī)制進(jìn)行劃分,還可以使用構(gòu)件庫機(jī)制配合一些管理規(guī)則。例如,微軟的com就利用windows系統(tǒng)注冊(cè)表配合幾種唯一標(biāo)識(shí)構(gòu)件的方式,實(shí)現(xiàn)構(gòu)件的登記、注銷、定位。corba規(guī)范中有接口池、實(shí)現(xiàn)池等規(guī)范定義,配合應(yīng)用登記管理的機(jī)制,也能對(duì)應(yīng)用構(gòu)件實(shí)施管理。
總之不難得出結(jié)論,基于中間件開發(fā)的應(yīng)用是構(gòu)件化的,中間件提供了構(gòu)件的體系結(jié)構(gòu),大大提高了應(yīng)用構(gòu)件生產(chǎn)的效率和質(zhì)量。
構(gòu)件思想對(duì)中間件的作用
中間件本身作為軟件產(chǎn)品,正處于方興未艾之際,因此本身也可以借鑒構(gòu)件思想,構(gòu)件化的軟件開發(fā)對(duì)中間件同樣適用。
首先,中間件作為分布式計(jì)算平臺(tái),涉及資源多樣,包括各種操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)協(xié)議甚至語言,其目標(biāo)是在分布的環(huán)境中統(tǒng)一使用這些資源。因此,可以建立針對(duì)這些資源的構(gòu)件庫,以動(dòng)態(tài)、靈活的方式進(jìn)行構(gòu)件的裝配,如針對(duì)不同的面向連接的網(wǎng)絡(luò)協(xié)議,可使用統(tǒng)一語義的網(wǎng)絡(luò)驅(qū)動(dòng)器構(gòu)件,最靈活的情況是根據(jù)配置動(dòng)態(tài)綁定。
其次,中間件的一個(gè)重要的設(shè)計(jì)目標(biāo)是互操作,而互操作的關(guān)鍵是有清晰而與實(shí)現(xiàn)無關(guān)的接口。因此在互操作的邊界上,必須將構(gòu)件的思想融入設(shè)計(jì)中。
再次,中間件的應(yīng)用范圍越來越廣,但應(yīng)用有不同的需要,不同的業(yè)務(wù)特點(diǎn),如果僅僅依靠固定的模式去套用,顯然不合適。例如,多數(shù)mis應(yīng)用并不需要交易管理;有些分布應(yīng)用也沒有oltp的特點(diǎn);金融應(yīng)用中安全就顯得十分關(guān)鍵;拓展到web的應(yīng)用則特別要求精干、安全和適應(yīng)性強(qiáng)。因此,中間件必須設(shè)計(jì)成可伸縮的體系,由一些可替換的構(gòu)件組成,如某些重于可靠,某些強(qiáng)調(diào)實(shí)時(shí),某些則需要小巧。產(chǎn)品只有這種定位,才能在變化迅速的市場上總是適應(yīng)需求,立于不敗之地。
第四,中間件不是最終的應(yīng)用,需要服務(wù)于應(yīng)用開發(fā),但可以面向典型業(yè)務(wù)的模型,以方便應(yīng)用的開發(fā),這些模型可以以構(gòu)件的形式作為產(chǎn)品提供。例如,corba服務(wù)和設(shè)施就是一些典型應(yīng)用的抽象體現(xiàn),使用這些服務(wù)的構(gòu)件,應(yīng)用可以大大減少開發(fā)規(guī)模,并獲得良好的效果。以構(gòu)架化技術(shù)術(shù)語講,就是領(lǐng)域建模。
第五,成功的商業(yè)軟件都是非常便于管理的,同樣中間件也有可配置性的需要,管理整個(gè)系統(tǒng)是個(gè)復(fù)雜的行為,但如果轉(zhuǎn)化為若干簡單行為的統(tǒng)一,對(duì)開發(fā)就很簡單而明確。事實(shí)上,標(biāo)準(zhǔn)的網(wǎng)絡(luò)管理協(xié)議正是蘊(yùn)涵了這種思想。基于構(gòu)件化開發(fā)的中間件也一樣,各個(gè)構(gòu)件自身是獨(dú)立配置的單元,只需進(jìn)行集成就可達(dá)到系統(tǒng)的管理目標(biāo)。
因此,構(gòu)件化的軟件設(shè)計(jì)思想在中間件發(fā)展中起到了重要的作用,可以預(yù)見,構(gòu)件化的中間件在今后市場上是有強(qiáng)大生命力的。
結(jié)束語
構(gòu)件是一種前沿的軟件設(shè)計(jì)思想,對(duì)整個(gè)軟件行業(yè)的發(fā)展有著至關(guān)重要的推動(dòng)作用。而中間件作為應(yīng)用軟件系統(tǒng)集成的關(guān)鍵技術(shù),保證了構(gòu)件化思想的實(shí)施,并為構(gòu)件提供了真正的運(yùn)行空間。中間件領(lǐng)域工業(yè)化標(biāo)準(zhǔn)的制定、統(tǒng)一及實(shí)現(xiàn),使基于構(gòu)件的應(yīng)用開發(fā)成為可能。反過來,構(gòu)件對(duì)新一代中間件產(chǎn)品中也起到促進(jìn)作用。
回顧經(jīng)典的工業(yè)化革命,不難得出一些有益的啟示:功能再復(fù)雜的產(chǎn)品都是由大量標(biāo)準(zhǔn)的零件(盡管零件可能只在本領(lǐng)域內(nèi)有用)組成,零件在生產(chǎn)線上裝配成一個(gè)成品,所有零件在成品中共同發(fā)揮作用。分工越細(xì)致、專業(yè)生產(chǎn)的程度越高,總體生產(chǎn)效率就越高。而構(gòu)件技術(shù)所扮演的角色就是把零件、生產(chǎn)線和裝配運(yùn)行的概念運(yùn)用在在軟件工業(yè)中,可以預(yù)見,軟構(gòu)件技術(shù)是軟件產(chǎn)業(yè)化革命的必然發(fā)展趨勢。
該文章在 2010/5/12 23:46:26 編輯過