**於:
ace自適配通訊環境 (adaptive communication environment)是物件導向的框架和工具包,它為通訊軟體實現了核心的併發和分布式模式。ace包含的多種元件可以幫助通訊軟體的開發獲得更好的靈活性、效率、可靠性和可移植性。ace中的元件可用於以下幾種目的:
併發和同步
程序間通訊(ipc)
記憶體管理
定時器訊號
檔案系統管理
執行緒管理
事件多路分離和處理器分派
連線建立和服務初始化
軟體的靜態和動態配置、重配置
分層協議構建和流式框架
分布式通訊服務:名字、日誌、時間同步、事件路由和網路鎖定,等等。
ace體系結構
如圖1-1所示,ace具有分層的體系結構。在ace框架中有三個基本層次:
作業系統(os)適配層
c++包裝層
框架和模式層
圖 ace的體系結構
1 os適配層
os適配層是位於本地os api和ace之間的"瘦"**層,它使ace的較高層與平台依賴性遮蔽開來,從而使得通過ace編寫的**保持了相對的平台無關性。只需要極少的努力,開發者就可以將ace應用移植到任何平台上。
2 c++包裝層
c++包裝層包括一些c++包裝類,它們可用於構建高度可移植的和型別安全的c++應用。
併發和同步:
ace提供若干併發和同步包裝類,對本地os多執行緒和多程序api進行了抽象。
ipc:
ace提供若干c++包裝類,封裝不同os中不同的程序間通訊(ipc)介面。
記憶體管理元件:
ace包含的一些類可用於記憶體動態分配和釋放;其中包括允許預分配所有動態記憶體的類。這些預分配的記憶體隨即通過ace提供的管理類的幫助進行本地管理。在大多數實時和嵌入式系統中,這樣的細粒度管理極為必要。另外還有一些類用於靈活地管理程序間共享記憶體。
定時器類:
有多種不同的類可用於處理定時器的排程和取消。
容器類:
ace還擁有若干可移植的stl風格的容器類,如map、hash_map、set、list,等等
訊號處理:
ace提供對特定os的訊號處理介面進行封裝的包裝類。這些類使得開發者能夠很容易地安裝和移除訊號處理器,並且可以為乙個訊號安裝若干處理器。
檔案系統元件:
ace含有包裝檔案系統api的類。這些類包括檔案i/o、非同步檔案i/o、檔案加鎖、檔案流、檔案連線包裝,等等。
執行緒管理:
ace提供包裝類來建立和管理執行緒。這些包裝還封裝了針對特定os的執行緒api,可被用於提供像執行緒專有儲存這樣的功能。
3 ace框架元件
ace框架元件是ace層次結構中的最高層,它們的基礎是若干針對特定通訊軟體領域的設計模式。設計者可以使用這些框架元件來幫助自己在高得多的層面上思考和構建系統。ace的這一層含有以下一些大型元件:
事件處理。
大多數通訊軟體都含有大量處理各種型別事件(比如,基於i/o、基於定時器、基於訊號和基於同步的事件)的**。軟體必須高效地多路分離、分派和處理這些事件。遺憾的是,大多數時間開發者們都在反覆地編寫這些**,"重新發明輪子"。這是因為,事件多路分離、分派和處理**全都緊密地耦合在一起,無法彼此獨立地使用。ace提供了被稱為reactor(反應器)的框架元件來解決這一問題。反應器提供用於高效地進行事件多路分離和分派的**,並極大地降低了它們與處理**之間的耦合,從而改善了可復用性和靈活性。
連線或服務初始化元件。
ace提供connector(聯結器)和acceptor(接受器)元件,用於降低連線初始化與連線建立後應用執行的實際服務之間的耦合。
流元件。
ace stream元件用於簡化那些本質上是分層的(layered)或層次的(hierarchic)軟體的開發。使用者級協議棧的開發是乙個好例子;這樣的棧由若干互連的層次組成。這些層次或多或少可以相互獨立地進行開發。當"資料"通過時,每一層都處理並改變它,並將它傳遞給下一層,以作進一步的處理。因為各層是相互獨立的,它們很容易被復用或替換。
服務配置元件。
通訊軟體開發者面臨的另乙個問題是,很多時候,軟體服務必須在安裝時配置,或必須在執行時重配置。應用中特定服務的實現可能需要進行改動,因而應用可能必須用新改動的服務重新配置。ace service configurator(服務配置器)為應用的服務提供動態的啟動、掛起和配置。
隨著計算機網路領域發展迅速,編寫通訊軟體變得更為困難。大量消耗在開發通訊軟體上的努力不過是"重新發明輪子"的變種,已知的可以在應用間通用的元件被重寫,而不是被復用。通過收集通用的元件和體系結構(它們在網路和系統程式設計領域一再被復用),ace為這一問題提供了解決方案。應用開發者可以採用ace,挑選和選擇在他的應用中所需的元件,並開始在ace工具箱的陪伴下構建應用。
ACE網路程式設計筆記(1) ACE自適配通訊環境
介紹 好處增強可移植性 在ace元件的幫助下,很容易在一種os平台上編寫併發網路應用,然後快速地將它們移植到各種其他的os平台上。而且,因為ace是開放原始碼的自由軟體,你無需擔心被鎖定在特定的作業系統平台或編譯器上。更好的軟體質量 ace的設計使用了許多可提高軟體質量的關鍵模式,這些質量因素包括通...
ACE 任務間通訊
上一次提到了ace中的主動物件,其實每乙個任務都有乙個訊息佇列,這個訊息佇列可用作任務間通訊的一種方式。當乙個任務想要與另乙個任務通訊時,他建立乙個訊息,並將訊息放入它想通訊的任務的訊息佇列中。另乙個任務用getq 方法來獲得這個訊息。如果佇列中沒有訊息,任務就進入休眠狀態。下面的例子演示如何進行任...
ACE網路通訊庫的配置
3.具體步驟 在ace目錄下新增config.h檔案 在此檔案中新增 include ace config win32.h 可選的配置有 define ace has winnt4 0 os不是nt4.0或以後版本 define ace has standard cpp library 1 使用標準...