ACE Service Configurator 架構(ACE Service Configurator Framework)

來源:互聯網
上載者:User
ACE Service Configurator 架構(ACE Service Configurator Framework)http://hi.baidu.com/pass86/blog/item/52402fdb56024e65d1164eea.html 
需要的靈活性:在運行時對你的應用進行不同的配置,從而使用不同的服務。
ACE Service Configurator 架構是Component Configurator 模式的一種實現。
配置靜態服務
靜態服務是代碼已經連結進可執行程式的服務。
核心:
1.你的服務類必須是ACE_Service_Object 的之類。
2.每個服務都需要實現以下掛鈎方法:
virtual int init (int argc, ACE_TCHAR *argv[]), 架構會在這個服務的執行個體進行初始化時調用這個方法。
virtual int fini (void), 架構會在服務執行個體關閉時調用這個方法。
virtual int info (ACE_TCHAR **str, size_t len), 可選,服務用這個方法類報告關於自身的資訊。

ACE把已知的、可配置的靜態服務放在一個內部倉庫中。每個靜態服務都必須用ACE提供一些宏把一些薄記資訊插入這個倉庫。被放在服務的.cpp檔案中。
初始化服務3步曲
ACE_FACTORY_DEFINE(CLS,SERVICE_CLASS)
協助建立和銷毀對象
CLS:你的程式/庫用來匯入/匯出聲明的標識符,若不需匯出到DLL,可使用ACE_Local_Service
SERVICE_CLASS:從ACE_Service_Object派生的類的名稱,會在服務初始化時被執行個體化。

ACE_STATIC_SVC_DEFINE(SERVICE_VAR,NAME,TYPE,FACTORY,FLAGS,ACTIVE)
向倉庫登記服務所需全部資訊
SERVICE_VAR:建立的靜態對象的名稱
NAME:一個文本串。在服務組態檔中將使用該名稱來標識這個服務。不應包含空格。
TYPE:正在登記的物件類型。ACE_SVC_OBJ_T。
FACTORY:一個指標,指向用於建立服務物件執行個體的工廠函數。一般用ACE_SVC_NAME (SERVICE_CLASS)來產生。
FLAGS:指定在服務關閉時,怎樣處置與服務相關的對象。使用常用ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ
ACTIVE:1表示在程式啟動後啟用。0表示會根據設定檔中的指令進行初始化。

ACE_STATIC_SVC_REQUIRE(SERVICE_VAR)
確保在你的程式啟動時建立你的服務物件的一個執行個體,並向架構登記它。
SERVICE_VAR:建立的靜態對象的名稱

靜態服務的配置行的格式:
static service-name [arguments]

啟動服務

ACE_STATIC_SVC_REGISTER(HA_Status_Descriptor);//HA_Status_Descriptor為建立靜態對象名稱
ACE_Service_Config::open (argc,
                                             argv,
   ACE_DEFAULT_LOGGER_KEY,
   0);

ACE_Service_Config::open()預設情況下會嘗試處理目前的目錄中名為svc.conf的檔案。

設定動態服務

動態服務可以從共用庫(DLL)中動態載入。
與靜態服務的過程區別:
1)動態服務類將駐留在共用庫(DLL)中,所以聲明服務類時(ACE_Service_Object派生的類)必須使用適當的匯出聲明。
2)只需要的宏:ACE_FACTORY_DEFINE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.