我們先從1999年2月美國總統 IT 顧問委員會的一份報告說起。這是一個非常重要而且很有影響的報告。在報告中列舉了大量的事實論證 IT 技術對社會和國家以及人民生活的重要作用。建議美國政府加大對IT 技術發展研究的投入。在建議重點支持的四大項目中,把軟件列在首位。因為報告認為軟件是信息所時代社會的最重要的基礎設施,然而現實上這個基礎卻相當脆弱和不可靠。軟件越來越普及而且越來越復雜,但缺乏開發可靠安全的各種軟件的合用技術。軟件的生產能力遠遠滿足不了飛速發展的實際需求。為此,報告建議重點支持四個方面的軟件技術的發展和研究。第一就是支持軟件開發方法和構件技術的基礎研究。什么是軟件開發的構件技術,為什么把它提得這么高,它究竟對軟件的開發和應用有些什么作用,構件技術的突破對軟件產業的發展會帶來什么影響和機遇,能否利用和抓住這個機遇發展我國年輕的軟件產業,正是本文要討論的問題。
面向對象到構件技術
如果把當前軟件技術的新動向歸納一下,我認為可以概括為以下三點,即 媒體數字化、計算機網絡化和軟件構件化。
所謂軟件構件化,就是要讓軟件開發像機械制造工業一樣,可以用各種標準和非標準的零件來進行組裝,或者像建筑業一樣,用各種建筑材料搭建成各式各樣的建筑。軟件的構件化和集成技術的目標是:軟件可以由不同廠商提供的,用不同語言開發的,在不同硬件平臺上實現的軟件構件,方便地、動態地集成。這些構件要求能互操作,它們可以放在本地的計算機上,也可以分布式地放置在網上異構環境下的不同結點上。實現軟件的構件化,這是軟件業界多年來分奮斗的目標,可以說已經經過了幾代人的努力。
早在六、七十年代,大型軟件系統開發引起的軟件危機,導致了 Yourdon 和 De Marco 的結構化分析與結構化設計的軟件工程方法的盛行。所謂結構化方法,其本質就是為了保證軟件開發的質量、提高軟件的零活性和軟件生產效率,通過工程化方法,建立系統的軟件開發過程,使開發的軟件具有好的結構,即所謂可拼裝、可裁剪的模塊化結構。
后來在八十年代出現了面向對象的方法。面向對象方法的基本思路是用對象來作為描寫客觀信息的基本單元,它包括封裝在一起的對象標識、對象屬性(數據)和對象操作(方法、運算)。與此相關的還有如下一些概念:如對象類、類的實例。對象類的繼承、父類、子類、多重繼承、方法的重載、限制以及接口等。關于面向對象方法已有很多研究,最著名的有:Grady Booch方法,James Rumbaugh 的 OMT(對象模型技術),Ivar Jacobson 的 OOSE(面向對象的軟件工程)。這幾種方法雖然基本思路相同,但仍有不少差異,從而為實際的軟件開發和應用帶來諸多不便。于是由 RATIONAL 軟件公司發起,從1995年開始,先是 Booch 和 Rumbaugh 合作,后來 Jacobson 也加盟,共同提出了一個統一的建模語言 UML ,得到很多軟件公司的支持,逐漸成為面向對象方法的一個事實上的標準。正是由于有了面向對象技術的發展,多年來追求軟件構件化的的夢想,才有可能成為現實。下面分別從 CORBA、DCOM和JAVA幾個方面來介紹軟件構件技術的基本內容。
公共對象請求中介結構CORBA
面向對象方法是軟件構件技術的基礎。為了真正實現軟件構件化,還必須解決分布式計算和對象的互操作問題。因為按上述構件技術的目標,要求構件間能互操作,而且這些構件也允許分布式地放置在網上異構環境下的不同結點上。
為了協調和制定分布式異構環境下應用軟件開發的統一標準,1989年成立了一個國際組織,叫對象管理聯盟(OMG)。加盟此組織的單位愈來愈多,現已有750多個單位,其中包括軟件的開發供應商,軟件用戶和軟件技術的研究院所等。經過多年的努力,已制定了一系列的標準規約,稱為 CORBA(公共對象請求中介結構)。 CORBA的核心是對象請求中介(ORB),是分布式對象借以相互操作的中介通道。另外還定義了最基本的對象服務構件和公共設施構件的規約。OMG所定義的CORBA并不規定具體的實現。實現CORBA的軟件由各個廠家自行開發?,F已有多種可用的產品版本發布。
如上所述,CORBA的核心ORB的作用是將客戶對象(Client)的請求發送給目標對象(在CORBA中稱為對象實現Object Implementation),并將相應的回應返回至發出請求的客戶對象。ORB的關鍵特征是客戶與目標對象之間通信的透明性。在通信過程中,ORB一般隱蔽了目標對象的以下內容:
1.目標對象的位置:客戶毋須了解具體目標對象所在的地址。目標對象可在同一機器的相同或不同進程中,也可在網絡上另一機器的進程中,。
2.對象實現的方式:客戶毋須了解具體目標對象是如何實現的,用何種語言寫成的,也毋須了解該對象所在的操作系統和具體的硬件環境。
3.對象執行的狀態:當客戶發送請求時,它毋須了解目標對象當前是否處于激活狀態(即是否處于一個正在執行的進程中)。若有必要ORB可透明地激活該對象。
4.對象通信機制:客戶毋須了解ORB使用何種底層通信機制來發送請求和響應回答(如TCP/IP,分享存儲器,及本地方法調用等)。
ORB的通信透明性使得應用開發者可較少考慮低級分布式系統的程序設計問題,而更多地關心應用領域問題。ORB的各部分的作用如下圖所示。
原文轉自:http://www.anti-gravitydesign.com