1 ACE概述
1.1 模式与架构
(1)软件模式分为3类:架构模式、设计模式、惯用法。
(2)模式贯穿了软件开发流程的几个关键阶段:
①系统分析:分析模式--着重于如何关注需求表面的额问题及蕴含的实质。
②系统设计:架构模式--规定了一个系统的结构特征及子系统的体系结构。
③模块设计实现:设计模式--描述了通信组件的一种通用的、可重用的结构,用于解决特定环境下的一般设计问题。
④实现:惯用法--特定编程语言的底层模式。
(3)当前最为常用的软件架构主要有OMG的CORBA框架、SUN的EJB框架和微软的DCOM框架等。
(4)《Applying UML and Patterns》一书中对软件框架的定义:
①框架是一个内聚的接口和类的集合,这些接口和类相互协助,提供核心的服务功能和逻辑子系统不变的部分。
②框架包含了抽象的类,这些抽象类定义了框架中用户需要遵循的约束,包含了对象的交互过程和不变量。
③通常框架的使用者需要定义框架中部分类的子类,才能定制、利用、扩展框架的功能。
④框架包含用抽象方法和具体方法的抽象类。
⑤框架采用Hollywood原则“不要找我们,我们会打电话给你”。通常这意味着用户通过定义框架中既有类的子类,从框架中获取信息。
1.2 ACE框架
ACE(Adpative Communication Environment)是一个跨平台的用于并发通信的C++框架。ACE提供了丰富的可重用的C++封装器(Wrapper Facade)和框架组件。使用ACE,开发者可以开发出高性能、实时的通信服务和应用。ACE利用进程间通信、事件分离、动态链接和并发技术简化了面向对象的网络开发。ACE结构如图1-1所示。
图1-1 ACE结构图
ACE的结构可以分为以下结构部分:
(1)ACE操作系统适配层和C++封装器
ACE是一个跨平台的通信框架,支持Windows、UNIX、Linux以及VxWorks等常用操作系统。操作系统适配层直接驻留在操作系统接口之上,主要用于屏蔽各类操作系统的差异,增强ACE的可移植性和可维护性。C++封装器为上层提供统一的面向对象的接口,这些类型安全的C++接口可以大大简化应用程序的开发。这一层主要采用Facade设计模式封装各主要操作系统的常用功能。
①并发和同步:多进程、多线程和同步功能。
②进程间通信和共享内存:本机及远程间通信和共享内存功能。
③事件分离:同步和异步I/O、定时器、信号、同步事件的分离功能。
④动态链接:使用动态链接来提供应用程序的配置。
⑤文件系统:文件和目录服务。
(2)框架
ACE架构是一个在操作系统适配层和C++封装器之上的网络编程框架,可以分为以下几个组件:
①事件分离组件:包括Reactor和Proactor框架,它们为应用程序响应特定I/O、定时器、信号和同步事件提供分离和调度功能。
②服务初始化组件:Acceptor_Connector框架,它将网络通信的初始化和应用程序的处理解耦。
③服务配置组件:Service Configurator框架,它使得应用程序的配置功能可以延缓到执行期。
④Task组件:Task框架,主要应用于多线程的并发编程。
⑤流组件:Streams框架,它为处理流数据的系统提供了结构。
⑥ORB适配器组件:ORB Adapter,ACE使用它可以实现与CORBA的无缝整合。
(3)分布式服务库和组件
除了操作系统适配层、C++封装器和框架组件外,ACE还提供了包装成自包含组建的额标准分布式服务库。
①可重用的分步式应用组件块:提供可重用的分布式应用模块,如命名服务、事件路由服务、日志服务等。
②框架应用实例:演示怎样使用Reactor、Service Configurator、Acceptor_Connector、Active Object以及IPC这样的ACE组件来有效地开发灵活、高校、可靠的通信软件。
(4)分布式计算中间件组件
在ACE中还绑定了如下的高层中间件组件:
①ACE ORB(TAO):利用ACE框架和模式实现的实时CORBA。
②JAWS:利用ACE框架和模式实现的自适应Web服务器。
1.3 ACE源代码
(1)源代码下载:http://download.dre.vanderbilt.edu/
(2)源码介绍
按照参考文献[1]中的介绍,ACE-6.0.0包的源代码的组织结构图如图1-2所示。ACE的主要代码在ace目录下,它包含了操作系统适配层、C++封装器和网络编程框架的代码。
图1-2 展开后的ACE+TAO-6.0.0的代码组织
【早在18年3月份就知道要使用ACE,当工作生活琐事+懒惰让学习过程一拖再拖,大致看了下《ACE程序员指南》,但看的很蒙圈,而且没有总结,现在准备结合《ACE技术内幕:深入解析ACE架构设计与实现原理》在学习一下。】
参考文献:
[1] ACE技术内幕:深入解析ACE架构设计与实现原理