戚雅金
(杭州師范大學錢江學院,浙江 杭州 310012)
近年來,對健壯的和高性能的分布式計算系統(tǒng)的需求一直在穩(wěn)定地增長。分布式計算在軟件開發(fā)方面有諸多優(yōu)勢。盡管分布式計算提供了許多潛在的好處,開發(fā)分布式軟件系統(tǒng)仍然是艱難的。
本課題來源十中國電子科技集團第十研究所某大型分布式跨平臺通信管理系統(tǒng)的預研項目,該項目旨在通過使用中間件技術來解決分布式軟件開發(fā)中所面臨的難題,以模式和框架的思想設計出良好的軟件架構,實現異構平臺之間的可移植和可交互,實現代碼的可擴展和可復用,設計并實現模塊化和高可靠的分布式通信管理系統(tǒng)。
為了解決分布式計算環(huán)境(distributed computing environment DCE)中不同硬件設備和軟件系統(tǒng)的互聯,增強網絡間軟件的互操作性,對象管理組織(OMG)提出了公共對象請求代理體系結構(CORBA),以增強軟件系統(tǒng)間的互操作能力,使構造靈活的分布式應用系統(tǒng)成為可能。CORBA 為可移植、面向對象的分布式計算機應用程序提供了不依賴十平臺的編程接口和模型,它不依賴十編程語言、計算平臺、網絡協議。因此CORBA 編寫的程序的可移植性是非常好的。
CORBA 體系結構中的基本概念可以用下圖來展示CORBA 體系結構。
CORBA 提供的服務包括:命名服務、事件服務、時間服務、對象事務服務、安全服務、收集服務、并發(fā)服務、特征服務、持久對象服務、生命周期服務、交易對象服務、外表化服務、關系服務、查詢服務、通知服務、許可服務。其中使用最多的還是命名服務,這里重點介紹一下。命名服務的本質是:將名字與coma 對象引用綁定,即名字與coma 對象引用之間的一個映射關系。一個名字對應一個對象引用,一個對象引用可以對應多個名字(關系為一對多)。命名服務的功能:命名服務的優(yōu)點的引用。對應用程序實現給定一個名字,就可以獲得綁定到該名字的對象引用。不需要知道對象的物理位置,只根據名字就可獲取該對象言,實現了訪問透明。命名服務的名字:命名服務的名字是由上下文環(huán)境組成的。
ACE 自適配通信環(huán)境(Adaptive Communication Environment)由美國華盛頓大學計算機系的Douglas C.Schmidt 及其領導的研究小組開發(fā),它是可自由使用、開放源碼的面向對象框架(Object-oriented Framework),實現了許多用十并發(fā)通信軟件的核心模式。ACE 提供了一組豐富的可復用C++包裝外觀(Wrapper Facade和框架組件,可跨多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分布式服務動態(tài)配置、并發(fā)執(zhí)行和同步等等。
ACE 具有分層的體系結構。在ACE 構架中有三個基本層次:OS 適配層、C++包裝層。
3.2.1 OS 適配層:OS 適配層是位于本地O S API 和ACE之間的“瘦”代碼層,它使ACE 的較高層與平臺依賴性屏蔽開來,從而使得通過ACE 編寫的代碼保持了相對的平臺無關性。只需要極少的努力,開發(fā)者就可以將ACE 應用移植到任何平臺上。
3.2.2 C++包裝層:C++包裝層包括一些C++包裝類,它們可用十構建高度可移植的和類型安全的C++應用。這是ACE 工具包最大的一部分,大約包含了總源碼的50%。下文所述ACE常用API 都屬十這一層。
CORBA 討論的主要是分布對象的透明調用等通信問題,但對多線程、線程并發(fā)、共享存儲、動態(tài)配置等與分布式程序設計密切相關的問題沒有直接描述。一些CORBA 產品雖然支持多線程,但所提供的支持與實際分布式系統(tǒng)設計的要求還有一定差距。另外,雖然CORBA產品一般是可以運行在多種操作系統(tǒng)平臺的,但是這并不能完全解決CORBA 程序代碼在異構平臺上的移植問題。ACE 的C++包裝層在多線程和通信套接字等方面提供了獨立十操作系統(tǒng)的統(tǒng)一Apl,正好解決了CORBA 程序開發(fā)的上述問題。
Johnson 和Foote 早在20世紀80年代末對框架的定義是:框架是表現為解決一類特定問題的抽象設計的一組類。Firesmith 對框架的定義:框架是由一些相互協作的類組成的一個集合,它捕獲了實現特定應用領域的公共需求和設計的主要機制和小尺度的模式。北京大學楊芙清教授從構件的角度認為:框架由一組互相協作的構件組成,通過這些構件及其協作關系定義了應用系統(tǒng)的體系結構。綜合上述觀點,可以看出框架是一種軟件復用技術,是一個應用軟件系統(tǒng)的部分或整體的可復用設計,具體表現為一組抽象類以及其實例(對象)之間的相互作用方式。
從功能特性的角度,框架可以分為白盒(White-B ox)與黑盒(Blaok-Box)兩種框架基于繼承的框架被稱為白盒框架。所謂白盒即具備可視性,被繼承的父類的內部實現細節(jié)對子類}fu言都是可知的。利用白盒框架的應用開發(fā)者通過衍生子類或重寫父類的成員方法來開發(fā)系統(tǒng)。子類的實現很大程度上依賴十父類的實現,這種依賴性限制了復用的靈活性和完全性。
框架與設計模式雖然相似,但卻有著根本的不同。設計模式是對在某種環(huán)境中反復出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執(zhí)行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的兀素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用十各種應用。可以說,框架是軟件,而設計模式是軟件的知識??蚣苤饕梢幌盗性O計模式和類(包括抽象類和具體類)組成,設計模式則由一些類對象的共同參與而實現的,同一個類可以由幾個不同的設計模式或框架所共享。下圖展示了框架中的這些重要兀素間的關系,同時也說明了軟件復用粒度按類、設計模式、框架的順序依次遞增。
本文是對與課題相關理論技術的概述,包括CORBA,ACE 和框架二部分。分析了ACE對CORBA 編程的輔助作用,闡明了框架和設計模式的關系。本課題的探討是以CORBA 為技術主線,以ACE 技術輔助,結合框架思想來解決分布式系統(tǒng)的諸多難題。
[1]劉瑜,張世棍,楊芙清等,基于構件的軟件框架與角色擴展形態(tài)研究,軟件學,2003年
[2]黃文海,德富,ACE 與CORBA 結合進行多線程分布應用系統(tǒng)開發(fā),計算機工,2000年