转载于:http://www.cnblogs.com/TianFang/archive/2006/12/03/580795.html

ACE自适配通信环境 (Adaptive Communication Environment)是面向对象的框架和工具包,它为通信软件实现了核心的并发和分布式模式。ACE包含的多种组件可以帮助通信软件的开发获得更好的灵活性、效率、可靠性和可移植性。ACE中的组件可用于以下几种目的:

  1. 并发和同步
  2. 进程间通信(IPC)
  3. 内存管理
  4. 定时器
  5. 信号
  6. 文件系统管理
  7. 线程管理
  8. 事件多路分离和处理器分派
  9. 连接建立和服务初始化
  10. 软件的静态和动态配置、重配置
  11. 分层协议构建和流式框架
  12. 分布式通信服务:名字、日志、时间同步、事件路由和网络锁定,等等。

ACE体系结构

如图1-1所示,ACE具有分层的体系结构。在ACE框架中有三个基本层次:

  1. 操作系统(OS)适配层
  2. C++包装层
  3. 框架和模式层

图 ACE的体系结构

1 OS适配层

OS适配层是位于本地OS API和ACE之间的"瘦"代码层,它使ACE的较高层与平台依赖性屏蔽开来,从而使得通过ACE编写的代码保持了相对的平台无关性。只需要极少的努力,开发者就可以将ACE应用移植到任何平台上。

2 C++包装层

C++包装层包括一些C++包装类,它们可用于构建高度可移植的和类型安全的C++应用。

  1. 并发和同步
    ACE提供若干并发和同步包装类,对本地OS多线程和多进程API进行了抽象。
  2. IPC
    ACE提供若干C++包装类,封装不同OS中不同的进程间通信(IPC)接口。
  3. 内存管理组件
    ACE包含的一些类可用于内存动态分配和释放;其中包括允许预分配所有动态内存的类。这些预分配的内存随即通过ACE提供的管理类的帮助进行本地管理。在大多数实时和嵌入式系统中,这样的细粒度管理极为必要。另外还有一些类用于灵活地管理进程间共享内存。
  4. 定时器类
    有多种不同的类可用于处理定时器的调度和取消。
  5. 容器类
    ACE还拥有若干可移植的STL风格的容器类,如Map、Hash_Map、Set、List,等等
  6. 信号处理
    ACE提供对特定OS的信号处理接口进行封装的包装类。这些类使得开发者能够很容易地安装和移除信号处理器,并且可以为一个信号安装若干处理器。
  7. 文件系统组件
    ACE含有包装文件系统API的类。这些类包括文件I/O、异步文件I/O、文件加锁、文件流、文件连接包装,等等。
  8. 线程管理
    ACE提供包装类来创建和管理线程。这些包装还封装了针对特定OS的线程API,可被用于提供像线程专有存储这样的功能。

3 ACE框架组件

ACE框架组件是ACE层次结构中的最高层,它们的基础是若干针对特定通信软件领域的设计模式。设计者可以使用这些框架组件来帮助自己在高得多的层面上思考和构建系统。ACE的这一层含有以下一些大型组件:

  1. 事件处理
    大多数通信软件都含有大量处理各种类型事件(比如,基于I/O、基于定时器、基于信号和基于同步的事件)的代码。软件必须高效地多路分离、分派和处理这些事件。遗憾的是,大多数时间开发者们都在反复地编写这些代码,"重新发明轮子"。这是因为,事件多路分离、分派和处理代码全都紧密地耦合在一起,无法彼此独立地使用。ACE提供了被称为Reactor(反应器)的框架组件来解决这一问题。反应器提供用于高效地进行事件多路分离和分派的代码,并极大地降低了它们与处理代码之间的耦合,从而改善了可复用性和灵活性。
  2. 连接或服务初始化组件
    ACE提供Connector(连接器)和Acceptor(接受器)组件,用于降低连接初始化与连接建立后应用执行的实际服务之间的耦合。
  3. 流组件
    ACE Stream组件用于简化那些本质上是分层的(layered)或层次的(hierarchic)软件的开发。用户级协议栈的开发是一个好例子;这样的栈由若干互连的层次组成。这些层次或多或少可以相互独立地进行开发。当"数据"通过时,每一层都处理并改变它,并将它传递给下一层,以作进一步的处理。因为各层是相互独立的,它们很容易被复用或替换。
  4. 服务配置组件
    通信软件开发者面临的另一个问题是,很多时候,软件服务必须在安装时配置,或必须在运行时重配置。应用中特定服务的实现可能需要进行改动,因而应用可能必须用新改动的服务重新配置。ACE Service Configurator(服务配置器)为应用的服务提供动态的启动、挂起和配置。

随着计算机网络领域发展迅速,编写通信软件变得更为困难。大量消耗在开发通信软件上的努力不过是"重新发明轮子"的变种,已知的可以在应用间通用的组件被重写,而不是被复用。通过收集通用的组件和体系结构(它们在网络和系统编程领域一再被复用),ACE为这一问题提供了解决方案。应用开发者可以采用ACE,挑选和选择在他的应用中所需的组件,并开始在ACE工具箱的陪伴下构建应用。

ACE自适配通信环境简介的更多相关文章

  1. Python生态环境简介[转]

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  2. Hadoop开发环境简介(转)

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...

  3. (转)python生态环境简介

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  4. Socket通信原理简介

    Socket通信原理简介 字数1011 阅读1766 评论2 喜欢11 何谓socket 计算机,顾名思义即是用来做计算.因而也需要输入和输出,输入需要计算的条件,输出计算结果.这些输入输出可以抽象为 ...

  5. ACE中TCP通信

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/07/585095.html 概述: 传输控制协议TCP(Transmission Contro ...

  6. 应用七:Vue之适配test环境变量(2.0版)

    在我们使用vue-cli创建的项目中,默认只有开发development和生产production两种环境变量:但在实际的项目开发过程中往往都会有测试环境,下面就来说一下如何适配测试环境test的环境 ...

  7. java的配置环境简介

    ============================================================================== 学java对很多人来说并不陌生,听的最多的 ...

  8. Davinci DM6446 Codec Engine双核通信环境的搭建

    根据前几篇文章,一个DM6446的系统已经架构完成.但是有很多人都喜欢TI的机制,毕竟双核软件开发对很多工程师来说是非常麻烦的事情,既然TI提供开发套件和开发包,那么直接做OEM就可以了,底层的东西不 ...

  9. ACE中UDP通信

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/07/585205.html udp是一种无连接的协议,提供无连接不可靠的服务. 在ace中,通 ...

随机推荐

  1. 《Effective C++》读书笔记 条款03 尽可能使用const 使代码更加健壮

    如果你对const足够了解,只需记住以下结论即可: 将某些东西声明为const可帮助编译器侦测出错误用法,const可被施加于任何作用于内的对象.函数参数.函数返回类型.成员函数本体. 编译器强制实施 ...

  2. python3对接聊天机器人API

    详情见http://api.qingyunke.com/智能机器人API接口说明支持功能:天气.翻译.藏头诗.笑话.歌词.计算.域名信息/备案/收录查询.IP查询.手机号码归属.人工智能聊天接口地址: ...

  3. Ext JS 6学习文档-第4章-数据包

    Ext JS 6学习文档-第4章-数据包 数据包 本章探索 Ext JS 中处理数据可用的工具以及服务器和客户端之间的通信.在本章结束时将写一个调用 RESTful 服务的例子.下面是本章的内容: 模 ...

  4. Java抽象与接口的区别

    Java抽象与接口的区别 答案方式一.简单来说,1.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 2.另外,实现接口的一定要实现接口里定义的所有 ...

  5. Python中变量名里面的下划线

    1 变量名前后都有两个下划线(__X__),表示是系统级变量: 2 变量名前只有一个下划线(_X),表示该变量不是由from module import *导入进来的: 3 变量名前有两个下划线(__ ...

  6. 软件工程 作业part1 自我介绍

    自我介绍 老师您好,我叫宋雨,本科在长春理工大学,专业是计算机科学与技术. 1.回想一下你曾经对计算机专业的畅想:当初你是如何做出选择计算机专业的决定?你认为过去接触的课程是否符合你对计算机专业的期待 ...

  7. OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解

    最近开始关注OpenGL ES 2.0 这是真正意义上的理解的第一个3D程序 , 从零开始学习 . 案例下载地址 : http://download.csdn.net/detail/han120201 ...

  8. TCP系列38—拥塞控制—1、概述

    在本篇中我们继续上一篇文章wireshark的示例讲解,上一篇介绍了一个综合示例后,本篇介绍一些简单的示例,在读本篇前建议先把上一篇读完,为了节省篇幅,本篇只针对一些特殊的场景点报文进行讲解,不会像上 ...

  9. <Android>列表、网格、画廊视图及适配器的绑定

    列表视图和适配器的绑定 列表视图既可以使用ListView组件,也可以继承ListActivity.显示可以是ArrayAdapter,也可以是游标SimpleCursorAdapter,还可以是继承 ...

  10. 3ds Max学习日记(七)

      第7章讲的是多边形建模,实例略多,有十六个,再加上周日的怠惰感,只做了几个实例. 附上今日的劳动成果:   布料(创建一个平面,转换为可编辑多边形,然后调整顶点,连接一些边,添加网格平滑,转换为可 ...