ACE之(一)ACE概述

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所示。

ACE总体结构

                                                                                          图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架构设计与实现原理

猜你喜欢

转载自blog.csdn.net/XingyuZhengtu/article/details/83897750
ACE