ACE之(一)ACE概述

2023-11-04

关注微信公众号“池边小树”~~获取更多分析~~(文末二维码~~)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACE之(一)ACE概述 的相关文章

  • HttpRunner使用中的一些问题记录

    背景 在了解接口自动化框架的过程中 看到有介绍说HttpRunner是一款不错的开源框架 所以 简单试用了一下 虽然有中文使用手册的帮助 但在结合自己项目接口的使用中还是遇到一些问题 在解决这些问题之后 也对这一框架的使用有了更深的了解 环
  • 如何创建对电脑屏幕的自动点击的脚本

    要创建对电脑屏幕的自动点击脚本 你可以使用操作系统自带的脚本语言 或者使用第三方自动化工具 使用操作系统自带的脚本语言 Windows 你可以使用 Windows 自带的 Visual Basic 脚本语言来创建自动点击脚本 使用 Visu
  • 进程-进程之进程状态(R、S、D、T、Z、X)

    进程概念 1 正在执行的程序 2 正在计算机上执行的程序实例 3 能分配处理器并由处理器执行的实体 进程的两个基本元素是程序代码和代码相关联的数据集 进程是一种动态描述 但并不代表所有的进程都在运行 这就可以引入 进程状态 进程在内存中因策
  • 小程序发布流程

    前言 小程序开发完成 并且经过了本地的测试后 提交审核 1 服务器域名配置一个月内可申请5次修改 服务器域名需经过ICP备案 新备案域名需24小时后才可配置 域名格式只支持英文大小写字母 数字及 不支持IP地址及端口号 服务器配置完成后 在
  • JavaScript基础知识全总结

    JavaScript基础 浏览器说明 浏览器是指可以显示网页服务器或者文件系统的HTML文件内容 并让用户与这些文件交互的一种软件 通俗的讲 可以显示页面的一个软件 国内网民计算机上常见的网页浏览器有 QQ浏览器 Internet Expl
  • 串口助手调试Lora模组

    硬件 两个usb装TTL 两个lora
  • DB实验(1)数据库和表的创建与管理

    一 实验内容 步骤以及结果 1 利用图形用户界面连接数据库 例如 MySQL Workbench或者 HeidiSQL 2 利用命令行连接数据库 3 利用图形用户界面创建 备份 删除和还原数据库和数据表 创建SPJ MNG数据库 在SPJ
  • 探析ElasticSearch Kibana在测试工作中的实践应用

    一 为什么使用ES Kibana 离线数据测试中最重要的就是数据验证 一部分需要测试es存储数据的正确性 另一部分就需要验证接口从es取值逻辑的正确性 而为了验证es取值逻辑的正确性 就需要用到Kibana 它能帮助测试同学更加快速高效的执

随机推荐

  • 【utools】vue2开发utools插件项目相关经验(保姆式详细介绍)

    目录 前言 初始化utools项目配置 vue2与utools配合 开发注意事项 utools提供的API使用 数据持久化 utools的部署和发布 结语 前言 utools是一个非常好用的软件 简易的各种工具对于我的生产力有很大提升 特别
  • 【QT+OpenCV】人脸识别简易版

    通过OpenCV自带的特征分类器和函数 实现一个简易版的人脸识别 在程序执行前 先了解一下OpenCV相关知识 haar特征分类器的使用 1 图像识别理论 知识 经验 2 haar特征分类器 正样本 负样本进行训练 haar特征 卷积算法
  • C++输入 / 输出运算符的重载-详细解释

    为什么需要重载输入输出运算符 有人会问 我直接用 iostream 里面的标准输入输出不好吗 搞这么麻烦 事实上 你会发现C 里面很多的 尤其是运算符 重载都是 面向对象惹的祸 而用户自定义数据类型的输入输出 就是通过重载运算符 lt lt
  • $.extend(true,{},a,b),深入理解,小心陷阱

    extend一般情景下 使用深度拓展两个对象时 我们想要的效果是 b对象覆盖掉a对象中存在的所有属性 没有则新增到a对象中 下面我们看一下我所遇到的问题 我希望通过深度拓展将tmp中的editoption覆盖掉ret中的editoption
  • Java开发区块链的三大sdk开发库

    如果你想将区块链合并到一个Java项目中 现在我们来看看就是这个细分领域中三个最大的OSS玩家 好的伙计们 我们都听说过比特币 以太坊或其他加密货币 其中有一些时髦的名字围绕着我们常见的新闻 但我们作为Java开发人员知道如何轻松地与这些区
  • 关于c语言循环,我想说的是:

    大一萌新写的c语言都能看懂版 一 Why does it work的博客 CSDN博客 大一萌新写的c语言都能看懂版 二 Why does it work的博客 CSDN博客 编了这么久的代码 对于运行你了解多少 Why does it w
  • Python安装第三方库,出现‘PyThreadState’ has no member named ‘exc_type’解决方法

    最近由于工作需要 要从hbase中读取数据 然后处理过后 展示给用户 在网上搜通过Python的happybase模块可以进行简单快捷的读取 但是在安装happybase 让我非常不开心 具体错误如下 Collecting happybas
  • 【Java校招面试】实战算法(五)——分数相加(虎牙)

    目录 前言 一 题目描述 二 解题思路 三 代码实现 后记 前言 实战算法 是本专栏的第三个部分 本篇博文是第五篇博文 主要讲解虎牙笔试题 分数相加 的解法 如有需要 可 点击这里 返回本专栏的索引文章 点击这里 返回上一篇 Java校招面
  • git add , git commit 添加错文件 撤销

    1 git add 添加 多余文件 这样的错误是由于 有的时候 可能 git add 空格 点 表示当前目录所有文件 不小心就会提交其他文件 git add 如果添加了错误的文件的话 撤销操作 git status 先看一下add 中的文件
  • js判断移动端还是pc端

    js判断移动端还是pc端 function isMobile let userAgentInfo navigator userAgent let Agents Android iPhone SymbianOS Windows Phone i
  • cat /proc/iomem

    在proc目录下有iomem和ioports文件 其主要描述了系统的io内存和io端口资源分布 对于外设的访问 最终都是通过读写设备上的寄存器实现的 寄存器不外乎 控制寄存器 状态寄存器和数据寄存器 这些外设寄存器也称为 IO端口 并且一个
  • JavaScript中的Object.assign()方法

    目录 介绍 什么是Object assign JavaScript可枚举属性 语法和参数 您可以使用Object assign 方法做什么 合并对象 克隆对象 关于Object assign 方法的注意事项 extend和Object as
  • FBEC2021丨近60+媒体联合宣发,行业年度影响力大会不容错过!

    FBEC2021暨第六届金陀螺奖 2021未来商业生态链接大会暨第六届金陀螺奖颁奖典礼 简称 FBEC2021 将于2021年12月10日在深圳市大中华喜来登酒店盛大召开 本次大会由陀螺科技主办 以 迎风破局 守正创新 为主题 聚焦游戏 电
  • Elasticsearch搜索返回值默认最大为10000解决方案

    以下为查询简单的查询elasticsearch索引例子 curl XPOST http es ip 9200 search d size 0 返回JSON took 1 timed out false shards total 2 succ
  • js中判断是否对象的方法

    目前据我所知的方法共有三种 1 typeof let obj a 1 b 2 c 3 console log typeof obj 返回 object 从判断结果上来看 似乎并没有太大的问题 但如果你把对象改为数组 他返回的也会是同样的结果
  • 距离向量算法

    距离向量算法 此算法的基础是Bellman Ford算法 这种算法的要点是 设 X 是结点 A 到 B 的最短路径上的一个结点 若把路径 A到B 拆成两段路径 A到X 和 X到B 则每段路径 A到X 和 X到B 也都分别是结点 A到X 和结
  • 最强PostMan使用教程(1)

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net u013613428 article details 51557804 最近需要测试产
  • 【数据库】Navicat远程连接oracle出现ORA 28547错误

    问题说明 用 Navicat Premium 15 连接oracle数据库 连接本地没有问题 远程连接oracle数据库时就出现问题 问题为 ORA 28547 connection to server failed probable Or
  • 从《看见》中想到的

    很多人向我推荐柴静的 看见 我也趁着闲暇的时光看完了它 这本书讲的是柴静自己的从业生涯 以及在采访过程中的所思所想 比如非典 比如唐山大地震 比如踩猫事件 对于这些东西 有些是亲身经历过 比如非典时期的人心惶惶 有些是看过一些报道 亦或者是
  • ACE之(一)ACE概述

    关注微信公众号 池边小树 获取更多分析 文末二维码 1 ACE概述 1 1 模式与架构 1 软件模式分为3类 架构模式 设计模式 惯用法 2 模式贯穿了软件开发流程的几个关键阶段 系统分析 分析模式 着重于如何关注需求表面的额问题及蕴含的实