在不懂各层组件的含义及用途时,可将此部分略去暂时不看,等以后拥有相关知识时在scaning。
ACE[ ADAPTIVE Cmmunication Environment,自适通信环境 ]是一种为通信软件实现核心并发性和分布性的面向对象架构。ACE为那些需要开发高性能、实时服务及跨操作系统平台等程序的开发者提供了丰富的可复用[是可在不同平台用的意思么?可重用组件:能被自定义去满足新软件、新平台的的性能需求]的C++包,所可跨的平台包括Win32,大部分UNIX及许多实时操作系统。
先从官网资料中粘贴ACE结构图一副,在看图不明白的情况之下再看描述的文字。
从上图可大体看出,ACE库的结构大体可以分为4个部分[ C APIS不是ACE库的内容 ]:
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可运行在许多操作系统上。
直接基于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)
ACE框架继承和加强了C++ wrapper层。
ACE网络编程框架处于C++外包上层。集成并增强了较低层的OS包装。该框架支持由应用服务组成的并发网络看守的动态配置。
主要包含以下组件:
(1)事件多路分离组件(Eventdemultiplexing components)
(2)服务初始化组件(Serviceinitialization components)
(3)服务配置组件(Serviceconfiguration components)
(4)分层次分层流组件(Hierarchically-layeredstream components)
(5)ORB适配器组件(ORBadapter components)
除了包装和框架,ACE还提供了一个网络服务组件的标准库。主要作用为:
(1)它们演示怎样利用ACEIPC包装、反应器、服务配置器、服务初始化、并发、内存管理,以及流组件;
(2)它们为常见的分布式系统任务提供了可复用组件,比如日志、名字、锁定和时间同步。
从图中就可以看出每个部分具体包含了哪些组件。可以先了解ACE的大体框架[ 组成及对应的大体功能 ],然后在具体的实现需求之上再来细究。
在过去几十年里,计算机能力和网络带宽成长速度十分之快。然后,咱设计和实现的通信软件价格依旧十分昂贵而且容易出错。这种会价格昂贵且需付出巨大努力在一定程度上阻碍了工业上对基础编程模式及对软件架构组件的不断创新,再者,硬件结构增长的不均匀性、操作系统及网络平台的多样性及全球激烈的竞争更加使得这一举动的难度性增加:得出编译正确、跨平台及运行高效的程序。
面向对象程序设计通过能提供可重用组件[能被自定义去满足新软件、新平台的的性能需求 ]的软件有助于帮助缩小软件的消费及提高软件的质量。
ACE以“自身开源”及“对复杂通信系统中的系统软件的重用具有极大好处”的特点使得ACE称为了一种被广泛采用的圣约。ACE能够如此成功的一个要点是ACE拥有“获取普遍通信软件的设计模式并将这些设计模式加深为灵活的架构组件”的能力。这些架构组件为“进程通信”、“多路事件分离”、“动态配置”、“并发”、“同步”及“系统访问”有效地封装并且加强了下层OS机制。
ACE C++包、架构组件、分布服务及高级分布式计算中间件描述在以下地址:http://www.cs.wustl.edu/~schmidt/ACE.html可灵活访问的文章中,这个链接包含了完整的源代码,文档及样例程序,包括JAWS和TAO。
用ACE,TAO及JAWS架构的许多工程例子在以下网址可以访问:www.cs.wustl.edu/~schmidt/ACE-users.html
此次笔记记录完毕。