構件技術與中間件

引言

  網絡計算帶領軟件產業進入了一個新的時代,商機無限,但同時挑戰也無限。以電子商務爲代表的技術潮流正將大到企業計算、小到個人數字代理的各種應用,在世界範圍內聯結起來,軟件製造業正面臨着一些新的課題,如複雜的分佈環境、靈活的應用模式、廣泛的包容性等,傳統的軟件設計思想已遠遠不夠。

  在這一背景下,構件技術應運而生,並逐漸炙手可熱。不同於OO技術強調對個體的抽象,構件則更推廣了對象封裝的內涵,側重於複雜系統中組成部分的協調關係,強調實體在環境中的存在形式,形成一個專門的技術領域。

  中間件作爲存在於系統軟件與應用之間的特殊層次,抽象了典型的應用模式,從而使應用軟件製造者可以更多地將思路放在業務邏輯中,並基於標準的形式進行開發,這樣就使軟件構架化成爲可能。一些工業標準的推出,進一步使中間件成爲可複用構件的運行框架,加速了軟件複用的現實化進程。

  本文從構件在現實軟件發展中的地位展開,分析了中間件在系統組織層次中所起的作用,闡述了構件化思想對中間件本身的促進作用,提出了一種構件化中間件的發展模式。


構件技術的基本思想

  OO技術是在"數據+算法"的基礎上提升了對事物的認識方法,對象的概念符合人們認識世界的習慣。而構件的思想則更多地將重點從建模本身發展到對軟件生產的考慮,即構件可以在應用領域的軟件生產中作爲零件納入新的體系中被重用。因此,構件是OO思想的沿襲和擴展,認識事物的角度從對象個體本身上升到個體在羣體中的作用。

  構件有幾個基本屬性:
1、構件是可獨立配置的單元,因此構件必須自包容。
2、構件強調與環境和其他構件的分離,因此構件的實現是嚴格封裝的,外界沒機會或沒必要知道構件內部的實現細節。
3、構件可以在適當的環境中被複合使用,因此構件需要提供清楚的接口規範,可以與環境交互。
4、構件不應當是持續的,即構件沒有個體特有的屬性,理解爲構件不應當與自身副本區別,在任
何環境中,最多僅有特定構件的一份副本。

  可以看出,構件沿襲了對象的封裝特性,但同時並不侷限在一個對象,其內部可以封裝一個或多個類、原型對象甚至過程,結構是靈活的。構件突出了自包容和被包容的特性,這就是作爲軟件生產線上作爲零件的必要特徵。

  構件技術的關鍵點涉及構件做什麼、構件交互的規則、構件存在的環境等,相應在現實中有各種支撐性的技術,如:
1、構件模型,研究構件的本質特徵及構件間的關係;
2、構件描述語言,以構件模型爲基礎,解決構件的精確描述、理解和組裝問題;
3、構件分類與檢索,研究構件的分類策略、組織模式及檢索策略,建立構件庫系統,支持構件的有效管理;
4、構件複合組裝,包括源代碼級的組裝和基於構件對象互操作性的運行級組裝;
5、標準化,包括構件模型的標準化和構件庫的標準化;
6、軟件構架,研究如何快速、可靠地應用可複用構件系統進行系統構造的方式,着重於軟件系統自身的整體結構和構件間的互聯。


中間件:構件存在的基礎

  構件技術在最初時更多是作爲一種思想存在,進而纔在一些關鍵的環節上發展出解決問題的技術分支。構件的存在某種程度上極大地依賴了構架技術,或環境、基礎設施、計算平臺,只有在適當的構架中,軟件纔有可能被抽象和隔離,最終成爲構件。因此,單獨討論構件是抽象而空洞的。構架不是操作系統、數據庫或網絡協議,也不完全是應用,而是在某種特定意義上的構件運行容器,層次上界於應用和基礎設施之間。

  中間件,從本質上是對分佈式應用的抽象,因而拋開了與應用相關的業務邏輯的細節,保留了典型的分佈交互模式的關鍵特徵。經過抽象,將紛繁複雜的分佈式系統經過提煉和必要的隔離後,以統一的層面形式呈現給應用。應用在中間件提供的環境中可以更好地集中於業務邏輯上,並以構件化的形式存在,最終自然而然地在異構環境中實現良好的協同工作。

  不難看出,中間件與構架實際是從兩種不同的角度看待軟件的中間層次,可以這樣說:中間件就是構架,或構件模型的具體實現,是構件軟件存在的基礎,中間件促進了構件化軟件。從下面列舉的一些中間件的特徵,可以看出,中間件與構架本質上是一致的。

面向需求的構件應用

  基於構架的構件化軟件開發應當是面向需求的,即設計者集中精力於業務邏輯本身,而不必爲分佈式應用中的通信、效率、互操作、可靠性、容錯性、完整性等大量與業務無直接關係但又非常重要的問題,而耗費大量的精力,理想的構架在這些方面應當爲構件軟件提供良好的運行環境。事實上,這些正是中間件所要解決的問題,因此,基於中間件開發的應用真正是面向需求的,從本質上符合構件化設計的思想。

使業務邏輯容易劃分

  服務器構件要求有很好的業務自包容性,應用開發者可以按照不同的業務進行功能的劃分,體現爲不同的接口或交互模式。針對每種業務的設計和開發是可以獨立進行的。

  構架和中間件有同樣的目標:提供業務的分隔和包容性。例如:消息中間件規定了消息是有屬性的,其中部分屬性則與業務的劃分有關,某種服務構件只進行相應類型的消息交互。至於如何保證業務的分類運行與管理,則是中間件的事情。

  因此可以說,中間件和構架都實現了構件嚮應用的集成。


構件的封裝、設計與實現隔離

  構件對外發生作用或構件間的交互,都是通過規範定義的接口進行,構件使用者只需要知道構件的接口,而不關心其內部實現,這是設計與實現分開的關鍵。構架就應當提供構件交互的規則,並基於這些規則實現類似容器的標準環境。

  中間件在分佈交互模式上都規定了接口(或類似)機制,如IDL就是描述接口的語言規範,從早期的DCE到現在的CORBA、DCOM、Java RMI等都使用IDL描述接口,所不同的只是語言規範。客戶訪問服務(或對象方法)均通過接口進行,至於服務採用怎樣的內部實現、基於怎樣的語言、甚至怎樣的操作系統、數據庫,開發者都不用關心。類似地,消息隊列也可作爲分佈交互的手段,消息的語法和語義定義保證了使用與實現的分離,使用消息隊列的客戶或服務是不依賴於對方的。既然中間件能隔離設計與實現,能在分佈的環境中封裝實現的細節,那麼,基於中間件的構件開發也就是可能的。

隔離應用構件與複雜系統資源

  構架很重要的一個功能就是將系統資源與應用構件隔離,這是保證構件可重用甚至"即插即用"的基礎,與中間件的意圖同樣是一致的。中間件最大的優勢之一就是屏蔽多樣的系統資源,保證良好的互操作性。應用構件開發者只需要按照中間件規定的模式進行設計開發,不必考慮下層的系統平臺。因此可以說,中間件真正提供了與環境隔離的構件開發模式。

符合標準的交互模型

  構架不是什麼具體軟件,而是抽象的模型,但模型中應當定義一些可操作的成分,如標準的協議。標準的中間件則實現了構架的模型,實現了標準的協議,如基於CORBA的對象中間件使用的是CORBA規範作爲構架模型,具體則實現了可互操作的GIOP協議,映射到TCP/IP爲IIOP協議,定義了CDR數據表示語法、數據包格式、消息語義等內容。因此,基於中間件的構件是符合標準模型的。

軟件重用

  軟件重用是構件化軟件生產的根本目標之一,中間件提供了構件封裝、構件交互規則、構件與環境的隔離及構架設施等機制,這些都爲軟件重用提供了方便的解決方案。

  另外,通過類似應用橋的機制,中間件可以建立訪問過去應用的通道;或者在新的中間件體系中建立特殊的運行容器,封裝以往的應用,從而最終做到對應用遺產的繼承性重用。

提供對應用構件的管理

  基於中間件的構件軟件可以方便地進行管理,因爲構件總可以通過方便的標識機制進行劃分,還可以使用構件庫機制配合一些管理規則。例如,微軟的COM就利用Windows系統註冊表配合幾種唯一標識構件的方式,實現構件的登記、註銷、定位。CORBA規範中有接口池、實現池等規範定義,配合應用登記管理的機制,也能對應用構件實施管理。

  總之不難得出結論,基於中間件開發的應用是構件化的,中間件提供了構件的體系結構,大大提高了應用構件生產的效率和質量。


構件思想對中間件的作用

  中間件本身作爲軟件產品,正處於方興未艾之際,因此本身也可以借鑑構件思想,構件化的軟件開發對中間件同樣適用。

  首先,中間件作爲分佈式計算平臺,涉及資源多樣,包括各種操作系統、數據庫、網絡協議甚至語言,其目標是在分佈的環境中統一使用這些資源。因此,可以建立針對這些資源的構件庫,以動態、靈活的方式進行構件的裝配,如針對不同的面向連接的網絡協議,可使用統一語義的網絡驅動器構件,最靈活的情況是根據配置動態綁定。

  其次,中間件的一個重要的設計目標是互操作,而互操作的關鍵是有清晰而與實現無關的接口。因此在互操作的邊界上,必須將構件的思想融入設計中。

  再次,中間件的應用範圍越來越廣,但應用有不同的需要,不同的業務特點,如果僅僅依靠固定的模式去套用,顯然不合適。例如,多數MIS應用並不需要交易管理;有些分佈應用也沒有OLTP的特點;金融應用中安全就顯得十分關鍵;拓展到Web的應用則特別要求精幹、安全和適應性強。因此,中間件必須設計成可伸縮的體系,由一些可替換的構件組成,如某些重於可靠,某些強調實時,某些則需要小巧。產品只有這種定位,才能在變化迅速的市場上總是適應需求,立於不敗之地。

  第四,中間件不是最終的應用,需要服務於應用開發,但可以面向典型業務的模型,以方便應用的開發,這些模型可以以構件的形式作爲產品提供。例如,CORBA服務和設施就是一些典型應用的抽象體現,使用這些服務的構件,應用可以大大減少開發規模,並獲得良好的效果。以構架化技術術語講,就是領域建模。

  第五,成功的商業軟件都是非常便於管理的,同樣中間件也有可配置性的需要,管理整個系統是個複雜的行爲,但如果轉化爲若干簡單行爲的統一,對開發就很簡單而明確。事實上,標準的網絡管理協議正是蘊涵了這種思想。基於構件化開發的中間件也一樣,各個構件自身是獨立配置的單元,只需進行集成就可達到系統的管理目標。

  因此,構件化的軟件設計思想在中間件發展中起到了重要的作用,可以預見,構件化的中間件在今後市場上是有強大生命力的。


結束語

  構件是一種前沿的軟件設計思想,對整個軟件行業的發展有着至關重要的推動作用。而中間件作爲應用軟件系統集成的關鍵技術,保證了構件化思想的實施,併爲構件提供了真正的運行空間。中間件領域工業化標準的制定、統一及實現,使基於構件的應用開發成爲可能。反過來,構件對新一代中間件產品中也起到促進作用。

  回顧經典的工業化革命,不難得出一些有益的啓示:功能再複雜的產品都是由大量標準的零件(儘管零件可能只在本領域內有用)組成,零件在生產線上裝配成一個成品,所有零件在成品中共同發揮作用。分工越細緻、專業生產的程度越高,總體生產效率就越高。而構件技術所扮演的角色就是把零件、生產線和裝配運行的概念運用在在軟件工業中,可以預見,軟構件技術是軟件產業化革命的必然發展趨勢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章