ACE自適配通信環境(簡介)

 撰文/Douglas C. Schmidt 翻譯/馬維達<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、ACE綜述

ACE
自適配通信環境(ADAPTIVE Communication Environment)是可自由使用、開放源碼的面向對象(OO)構架(framework),它實現了許多用於併發通信軟件的核心模式。ACE提供了一組豐富的可重用C++包裝外觀(wrapper facade)和構架組件,可跨多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步,等等。

ACE
的目標用戶是高性能和實時通信服務和應用的開發者。它簡化了使用進程間通信、事件多路分離、顯式動態鏈接和併發的OO網絡應用和服務的開發。此外,通過服務在運行時與應用的動態鏈接,ACE使系統的配置和重配置得以自動化。

ACE
正在進行持續的改進。Riverace公司(http://www.riverace.com)採用開放源碼商業模式對ACE進行商業支持。此外,ACE開發組的許多成員目前正在進行The ACE ORBTAOhttp://www.cs.wustl.edu/~schmidt/TAO.html)的開發工作。

二、使用ACE的好處

諸多使用ACE的好處包括:
(1)
增強可移植性:在ACE組件的幫助下,很容易在一種OS平臺上編寫併發網絡應用,然後快速地將它們移植到各種其他的OS平臺上。而且,因爲ACE是開放源碼的自由軟件,你無需擔心被鎖定在特定的操作系統平臺或編譯器上。
(2)
更好的軟件質量ACE的設計使用了許多可提高軟件質量的關鍵模式,這些質量因素包括通信軟件靈活性、可擴展性、重用性和模塊性。
(3)
更高的效率和可預測性ACE經小心設計,支持廣泛的應用服務質量(QoS)需求,包括延遲敏感應用的低響應等待時間、高帶寬應用的高性能,以及實時應用的可預測性。
(4)
更容易轉換到標準的高級中間件TAO使用了ACE提供的可重用組件和模式。它是CORBA的開發源碼、遵循標準的實現,併爲高性能和實時系統作了優化。爲此,ACETAO被設計爲能良好地協同工作,以提供全面的中間件解決方案。 

三、ACE的結構和功能

下圖顯示了ACE中的關鍵組件以及它們的層次關係:

 

圖中的結構和各層的組成部分描述如下。

 
四、ACE OS適配層

該層用C寫成,直接駐留在本地OS API之上。它提供輕型的類POSIX OS適配層,將ACE中的其他層及組件和以下與OS API相關聯的平臺專有特性屏蔽開來:

(1)
併發和同步ACE的適配層封裝了用於多線程、多進程和同步的OS API

(2)
進程間通信(IPC)和共享內存ACE的適配層封裝了用於本地和遠地IPC、以及共享內存的OS API

(3)
事件多路分離機制ACE的適配層封裝了用於對基於I/O、定時器、信號和同步的事件進行同步和異步多路分離的OS API

(4)
顯式動態鏈接ACE的適配層封裝了用於顯式動態鏈接的OS API。顯式動態鏈接允許在安裝時或運行時對應用服務進行配置。

(5)
文件系統機制ACE的適配層封裝了用於操作文件和目錄的OS文件系統API

ACE OS
適配層的可移植性使得ACE可運行在許多操作系統上。ACE已在廣泛的OS平臺上被移植和測試,包括Win32(也就是,在IntelAlpha平臺,使用MSVC++Borland C++ BuilderIBM Visual AgeWinNT 3.5.x4.x2000Win95/98WinCE)、Mac OS X、大多數版本的UNIX(例如,SPARCIntel上的Solaris 1.x2.xSGI IRIX 5.x6.xDG/UXHP-UX 9.x10.x11.xDEC/Compaq UNIX 3.x4.xAIX 3.x4.xUnixWareSCO,以及可自由使用的UNIX實現,比如Debian Linux 2.xRedHat Linux 5.26.x7.xFreeBSDNetBSD)、實時操作系統(比如,LynxOSVxWorksChorus ClassiX 4.0QnX NeutrinoRTEMSPSoS)、MVS OpenEditionCRAY UNICOS

由於ACEOS適配層所提供的抽象,所有這些平臺使用同一棵代碼樹。這樣的設計極大地增強了ACE的可移植性和可維護性。此外,還有Java版本的ACE可用(http://www.cs.wustl.edu/~eea1/JACE.html)。 

五、OS接口的C++包裝外觀

可以直接在ACE OS適配層之上編寫高度可移植的C++應用。但是,大多數ACE開發者使用的是上圖中所示的C++包裝外觀層。通過提供類型安全的C++接口(這些接口封裝並增強本地的OS併發、通信、內存管理、事件多路分離、動態鏈接和文件系統API),ACE包裝外觀簡化了應用的開發。應用可以通過有選擇地繼承、聚合和/或實例化下面的組件來組合和使用這些包裝:

(1)
併發和同步組件ACE對像互斥體和信號量這樣的本地OS多線程和多進程機制進行抽象,以創建高級的OO併發抽象,像主動對象(Active Object)和多態期貨(Polymorphic Future)。

(2) IPC
和文件系統組件ACE C++包裝對本地和/或遠地IPC機制進行封裝,比如socketTLIUNIX FIFOSTREAM管道,以及Win32命名管道。此外,ACE C++包裝還封裝了OS文件系統API

(2)
內存管理組件ACE內存管理組件爲管理進程間共享內存和進程內堆內存的動態分配和釋放提供了靈活和可擴展的抽象。

ACE C++
包裝提供了許多與ACE OS適配層一樣的特性。但是,這些特性是採用C++類和對象、而不是獨立的C函數來構造的。這樣的OO包裝有助於減少正確地學習和使用ACE所需的努力。

例如,C++的使用提高了應用的健壯性,因爲C++包裝是強類型的。所以,編譯器可在編譯時、而不是運行時檢測類型系統違例。相反,不到運行時,不可能檢測像socket或文件系統I/O這樣的C一級OS API的類型系統違例。

ACE
採用了許多技術來降低或消除額外的性能開銷。例如,ACE大量地使用C++內聯來消除額外的方法調用開銷;這樣的開銷可能由OS適配層和C++包裝所提供的額外的類型安全和抽象層次帶來。此外,對於關鍵性能的包裝,比如socket和文件I/Osend/recv方法,ACE會避免使用虛函數。

 
六、構架

ACE
還包含一個高級的網絡編程構架,集成並增強了較低層次的C++包裝外觀。該構架支持將併發分佈式服務動態配置進應用。ACE的構架部分包含以下組件:
(1)
事件多路分離組件ACE Reactor(反應堆)Proactor(前攝器)是可擴展的面向對象多路分離器,它們分派應用專有的處理器,以響應多種類型的基於I/O、定時器、信號和同步的事件。
(2)
服務初始化組件ACE Acceptor(接受器)和Connector(連接器)組件分別使主動和被動的初始化任務與初始化一旦完成後通信服務所執行的應用專有的任務去耦合。
(3)
服務配置組件ACE Service Configurator(服務配置器)支持應用的配置,這些應用的服務可在安裝時和/或運行時被動態裝配。
(4)
分層的流組件ACE Stream組件簡化了像用戶級協議棧這樣的由分層服務組成的通信軟件應用的開發。
(5)ORB
適配器組件:通過ORB適配器,ACE可以與單線程和多線程CORBA實現進行無縫集成。

ACE
構架組件便利了通信軟件的開發,它們無需修改、重編譯、重鏈接,或頻繁地重啓運行中的應用,就可被更新和擴展。在ACE中,這樣的靈活性是通過結合以下要素來獲得的:(1C++語言特性,比如模板、繼承和動態綁定,(2)設計模式,比如抽象工廠、策略和服務配置器,以及(3OS機制,比如顯式動態鏈接和多線程。 

七、分佈式服務和組件

除了OS適配層、C++包裝外觀和構架組件,ACE還提供了包裝成自包含組件的標準分佈式服務庫。儘管這些服務組件並不是ACE構架庫的嚴格組成部分,它們在ACE中扮演了兩種角色:
(1)
分解出可重用分佈式應用的積木:這些服務組件提供通用的分佈式應用任務的可重用實現,比如名字服務、事件路由、日誌、時間同步和網絡鎖定。
(2)
演示常用的ACE組件的用例:這些分佈式服務還演示了怎樣用像ReactorService ConfiguratorAcceptorConnectorActive Object,以及IPC包裝這樣的ACE組件來有效地開發靈活、高效和可靠的通信軟件。

 
八、高級分佈式計算中間件組件

即使使用像ACE這樣的通信構架,開發健壯、可擴展和高效的通信應用仍富有挑戰性。特別是,開發者必須掌握許多複雜的OS和通信的概念,比如
(1)
網絡尋址和服務標識。

(2)
表示轉換,比如加密、壓縮和在異種終端系統間的字節序轉換。

(3)
進程和線程的創建和同步。

(4)
本地和遠地進程間通信(IPC)機制的系統調用和庫例程。

通過採用像CORBADCOMJava RMI這樣的高級分佈式計算中間件,有可能降低開發通信應用的複雜性。高級分佈式計算中間件駐留在客戶端和服務器之間,可使分佈式應用開發的許多麻煩而易錯的方面自動完成,包括: (1)認證、授權和數據安全。

(2)
服務定位和綁定。

(3)
服務註冊和啓用。

(4)
事件多路分離和分派。

(5)
在像TCP這樣的面向字節流的通信協議之上實現消息幀。

(6)
涉及網絡字節序和參數編排(marshaling)的表示轉換問題。

爲給通信軟件的開發者提供這些特性,在ACE中綁定了下面的高級中間件應用:
(1)The ACE ORB
TAOTAO是使用ACE提供的構架組件和模式構建的CORBA實時實現,包含有網絡接口、OS、通信協議和CORBA中間件組件及特性。TAO基於標準的OMG CORBA參考模型,並進行了增強的設計,以克服傳統的用於高性能和實時應用的ORB的缺點。TAOACE一樣,也是可自由使用的開放源碼軟件。
(2)JAWS
JAWS是高性能、自適配的Web服務器,使用ACE提供的構架組件和模式構建。JAWS被構造成構架的構架JAWS的總體構架含有以下組件和構架:事件多路分派器、併發策略、I/O策略、協議管道、協議處理器和緩存虛擬文件系統。每個構架都被構造成一組協作對象,通過組合和擴展ACE中的組件來實現。JAWS也是可自由使用的開放源碼軟件。 

九、主頁

ACE
的主頁爲:http://www.cs.wustl.edu/~schmidt/ACE.html,在這裏可獲得最新版本的ACE以及其他相關資源。 (中文文檔見http://www.flyingdonkey.com/ace/ 譯者注)

發佈了24 篇原創文章 · 獲贊 3 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章