1 ACE[ 功能]
ACE[ ADAPTIVE Cmmunication Environment,自适通信环境 ]是一种为通信软件实现核心并发性和分布性的面向对象架构。ACE为那些需要开发高性能、实时服务及跨操作系统平台等程序的开发者提供了丰富的可复用[
是可在不同平台用的意思
么?可重用组件: 能被自定义去满足新软件、新平台的的性能需求
]的C++包,所可跨的平台包括Win32,大部分UNIX及许多实时操作系统。
1.ACE OS Adaptation layer( 操作系统适配层)
OS适配层:标准协议的一个集合,用于适配用户业务。主要负责将高层应用的用户信息[ 如编写的高级语言代码 ]转换成适合于异步转移模式(ATM)层所要求的格式。
这部分直接位于OS APIs[ C 编写的 ]层之上,主要是屏蔽[ 封装 ]对于ACE其它层及组件来说不同操作系统上特定的APIs的不同之处,将系统调用接口统一到C++函数的接口,以实现平台的可移植。
这些OS之上特定APIs包括:
(1)实时和同步(Concurrencyand synchronization):封装“多线程”、“多重处理”及“同步”的OS APIs。
(2)进程通信( IPC)及共享内存(Interprocess communication (IPC) and shared memory):封装“本地”及“远程”的IPC和共享内存的OS APIs。
(3)事件多路分离机制(Eventdemultiplexing mechanisms):封装基于I/O、时钟、信号及同步等事件的同步及异步的OS APIs.
(4)显示动态链接(Explicitdynamic linking):封装显示动态链接[ 允许程序服务在安装或者运行期间能被配置 ]的OS APIs。
(5)文件系统机制( Filesystem mechanisms ):封装操作文件和目录的 OS APIs。
ACE OS适配层的可移植性使得ACE可运行在许多操作系统上。
2.ACE C++Wrappers (C++包装)
直接基于ACE OS Adaptation layer开发自己的高速的C++程序是可能的。但是由于图中所示的C++ wrapper 层提供了一个封装且加强版OS 的并发部分、通信部分、内存管理部分、事件分离、动态链接及系统文件处理的API,使得很多开发者直接选择使用扩展C++wrapper层来进行开发。
在ACE OS Adaptation之上的是OO[ Object Oriented, 面向对象 ]C++封装包。用户可以通过选择性的继承、聚合来联合或者组成新的C++包。访问这些C++包装类提供的接口来间接的访问到操作系统的API,不必一一的去访问各操作系统提供的API[ Application Programming Interface,应用程序编程接口 ]。
可利用C++包来实例化以下组件:
(1)并发和同步组件(Concurrencyand synchronization components)
(2)进程通信和文件系统组件(IPCand filesystem components)
(3)内存管理组件(Memorymanagement components)
3.ACEFramework(框架)
ACE框架继承和加强了C++ wrapper层。
ACE网络编程框架处于C++外包上层。集成并增强了较低层的OS包装。该框架支持由应用服务组成的并发网络看守的动态配置。
主要包含以下组件:
(1)事件多路分离组件(Eventdemultiplexing components)
(2)服务初始化组件(Serviceinitialization components)
(3)服务配置组件(Serviceconfiguration components)
(4)分层次分层流组件(Hierarchically-layeredstream components)
(5)ORB适配器组件(ORBadapter components)
4.ACE网络服务组件
除了包装和框架,ACE还提供了一个网络服务组件的标准库。主要作用为:
(1)它们演示怎样利用ACEIPC包装、反应器、服务配置器、服务初始化、并发、内存管理,以及流组件;
(2)它们为常见的分布式系统任务提供了可复用组件,比如日志、名字、锁定和时间同步。
可以先了解ACE的大体框架[ 组成及对应的大体功能 ],然后在具体的实现需求之上再来细究。
ACE是自适通信环境,提供C++包以实现跨平台并发和分布式通信。它包括OS适配层,封装操作系统API以实现可移植性;C++包装层,提供面向对象的并发、通信、内存管理和文件系统API;以及ACE框架,支持网络服务组件的动态配置。ACE网络服务组件则为分布式系统任务提供可复用组件。

255

被折叠的 条评论
为什么被折叠?



