ACE Service Configurator 框架(ACE Service Configurator Framework)

ACE Service Configurator 框架(ACE Service Configurator Framework)
 
需要的灵活性:在运行时对你的应用进行不同的配置,从而使用不同的服务。
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值