ACE之(一)ACE概述

星語征途發表於2018-11-09

1 ACE概述

1.1 模式與架構

(1)軟體模式分為3類:架構模式、設計模式、慣用法。

(2)模式貫穿了軟體開發流程的幾個關鍵階段:

①系統分析:分析模式--著重於如何關注需求表面的額問題及蘊含的實質。

②系統設計:架構模式--規定了一個系統的結構特徵及子系統的體系結構。

③模組設計實現:設計模式--描述了通訊元件的一種通用的、可重用的結構,用於解決特定環境下的一般設計問題。

④實現:慣用法--特定程式語言的底層模式。

(3)當前最為常用的軟體架構主要有OMG的CORBA框架、SUN的EJB框架和微軟的DCOM框架等。

(4)《Applying UML and Patterns》一書中對軟體框架的定義:

①框架是一個內聚的介面和類的集合,這些介面和類相互協助,提供核心的服務功能和邏輯子系統不變的部分。

②框架包含了抽象的類,這些抽象類定義了框架中使用者需要遵循的約束,包含了物件的互動過程和不變數。

③通常框架的使用者需要定義框架中部分類的子類,才能定製、利用、擴充套件框架的功能。

④框架包含用抽象方法和具體方法的抽象類。

⑤框架採用Hollywood原則“不要找我們,我們會打電話給你”。通常這意味著使用者通過定義框架中既有類的子類,從框架中獲取資訊。

1.2 ACE框架

ACE(Adpative Communication Environment)是一個跨平臺的用於併發通訊的C++框架。ACE提供了豐富的可重用的C++封裝器(Wrapper Facade)和框架元件。使用ACE,開發者可以開發出高效能、實時的通訊服務和應用。ACE利用程式間通訊、事件分離、動態連結和併發技術簡化了物件導向的網路開發。ACE結構如圖1-1所示。

ACE總體結構

                                                                                          圖1-1 ACE結構圖

ACE的結構可以分為以下結構部分:

(1)ACE作業系統適配層和C++封裝器

ACE是一個跨平臺的通訊框架,支援Windows、UNIX、Linux以及VxWorks等常用作業系統。作業系統適配層直接駐留在作業系統介面之上,主要用於遮蔽各類作業系統的差異,增強ACE的可移植性和可維護性。C++封裝器為上層提供統一的物件導向的介面,這些型別安全的C++介面可以大大簡化應用程式的開發。這一層主要採用Facade設計模式封裝各主要作業系統的常用功能。

①併發和同步:多程式、多執行緒和同步功能。

②程式間通訊和共享記憶體:本機及遠端間通訊和共享記憶體功能。

③事件分離:同步和非同步I/O、定時器、訊號、同步事件的分離功能。

④動態連結:使用動態連結來提供應用程式的配置。

⑤檔案系統:檔案和目錄服務。

(2)框架

ACE架構是一個在作業系統適配層和C++封裝器之上的網路程式設計框架,可以分為以下幾個元件:

①事件分離元件:包括Reactor和Proactor框架,它們為應用程式響應特定I/O、定時器、訊號和同步事件提供分離和排程功能。

②服務初始化元件:Acceptor_Connector框架,它將網路通訊的初始化和應用程式的處理解耦。

③服務配置元件:Service Configurator框架,它使得應用程式的配置功能可以延緩到執行期。

④Task元件:Task框架,主要應用於多執行緒的併發程式設計。

⑤流元件:Streams框架,它為處理流資料的系統提供了結構。

⑥ORB介面卡元件:ORB Adapter,ACE使用它可以實現與CORBA的無縫整合。

(3)分散式服務庫和元件

除了作業系統適配層、C++封裝器和框架元件外,ACE還提供了包裝成自包含組建的額標準分散式服務庫。

①可重用的分步式應用元件塊:提供可重用的分散式應用模組,如命名服務、事件路由服務、日誌服務等。

②框架應用例項:演示怎樣使用Reactor、Service Configurator、Acceptor_Connector、Active Object以及IPC這樣的ACE元件來有效地開發靈活、高校、可靠的通訊軟體。

(4)分散式計算中介軟體元件

在ACE中還繫結了如下的高層中介軟體元件:

①ACE ORB(TAO):利用ACE框架和模式實現的實時CORBA。

②JAWS:利用ACE框架和模式實現的自適應Web伺服器。

1.3 ACE原始碼

(1)原始碼下載:http://download.dre.vanderbilt.edu/

(2)原始碼介紹

按照參考文獻[1]中的介紹,ACE-6.0.0包的原始碼的組織結構圖如圖1-2所示。ACE的主要程式碼在ace目錄下,它包含了作業系統適配層、C++封裝器和網路程式設計框架的程式碼。

                                                                                圖1-2 展開後的ACE+TAO-6.0.0的程式碼組織

【早在18年3月份就知道要使用ACE,當工作生活瑣事+懶惰讓學習過程一拖再拖,大致看了下《ACE程式設計師指南》,但看的很蒙圈,而且沒有總結,現在準備結合《ACE技術內幕:深入解析ACE架構設計與實現原理》在學習一下。】

參考文獻:

[1] ACE技術內幕:深入解析ACE架構設計與實現原理

相關文章