ACE是一個很著名的網絡服務開發框架,最近研究它,發現裏面有一些框架特有的概念,下面我就對這些概念的理解做一下總結。
1、網絡接口的C++包裝
通過給網絡編程API進行外觀模式的封裝,向用戶提供簡單的網絡接口對象,簡化用戶編程。
2、OS併發機制的OO封裝
封裝了操作系統的鎖對象,並且通過智能指針把鎖對象封裝起來,以實現在函數任意地方退出時的鎖對象自動釋放。
3、線程專有存儲
封裝了linux系統的線程專有存儲機制,通過一個代理模板類來實現對線程專有存儲機制的封裝,並通過操作->重載來訪問實際的對象。
4、主動對象
調用和實現分離在不同線程中,調用者通過接口把方法專成請求發送到實現者隊列裏,實現者從隊列裏取出消息從而執行方法,有利於多個調用者併發的調用實現者的方法。
5、反應器(Reactor)模式
通過註冊不同的事件及其處理對象到反應器,反應器統一檢測這些事件並在事件發生時調用相應的時間處理對象,實現了事件監測和處理機制的複用。可以爲多線程,且採用非阻塞IO調用模式。
6、前攝器(Proactor)模式
封裝linux系統的異步IO機制,啓動異步IO操作時把結果處理函數也註冊上去,當系統返回操作結果時調用之前註冊的結果處理函數來進行結果處理。一般可爲單線程或者多線程,且採用異步調用模式。
7、接受器-連接器(Acceptor-Connector)
封裝了linux系統TCP通信的客戶端和服務器角色模型,底層可以使用反應器模式來驅動各種事件處理,簡化用戶編程。
8、服務配置器模式(Service Configurator)
將服務的啓動終止等服務控制與服務實現分離開來,提供類似linux系統inted的統一服務控制機制。
9、內存管理機制
構造了進程內的動態內存管理以及進程間的共享內存管理通用機制。
(完)