ACE

ACE IPC封装:本地和远地IPC机制

组成:SOCK SAP(封装socket API)、TLI SAP(封装TLI API)、SPIPE SAP(封装UNIX SunOS 5.x STREAM管道API),以及FIFO SAP(封装UNIX命名管道API)

SOCK SAP:为应用提供Internet域和UNIX域协议族的面向对象的接口,ACE_SOCK *子类封装Internet域的功能,而ACE_LSOCK *子类封装UNIX域的功能,进一步划分为*Dgram组件(提供不可靠、无连接、面向消息的功能) ,*ACE_Stream组件(提供可靠、面向连接的字节流的功能)和ACE_*_Acceptor组件(提供通常用于服务器的连接建立功能) ,*Stream组件(提供同时用于客户和服务器的双向字节流传输功能)。

TLI SAP:提供系统V传输层接口,TLI的TLI SAP继承层次几乎与socket的SCOK SAP包装相同。主要的区别是TLI和TLI SAP并不定义UNIX域协议族的接口。此外,目前TLI没有被移植到Win32平台。

SPIPE SAP:为高性能本地IPC提供OO包装。在Win32平台上,SPIPE SAP类属在命名管道之上实现。Win32命名管道机制主要用于在同一机器的进程间高效地传输数据。对于本地IPC,它通常比使用socket更为高效;在UNIX平台上,SPIPE SAP类属通过已安装(mounted)的STREAM管道和connld[28]来实现;SunOS 5.x提供fattach系统调用,将管道句柄安装到UNIX文件系统中的指定位置。通过将connld流模块推入管道已安装的一端,可以创建服务器应用。当与服务器运行在同一主机上的客户应用随后打开与已安装的管道相关联的文件时,客户和服务器都将获得一个I/O句柄,标识一个唯一的、非多路服用和双向的通信信道。SPIPE SAP继承层次是SOCK SAP及TLI SAP所用层次的“镜像“。它提供与SOCK SAP ACE_LSOCK *类(它们自己封装了UNIX域的socket)相近似的功能。但是,在SunOS 5.x平台上,SPIPE SAP比ACE_LSOCK*接口更为灵活,因为它使得STREAM模块可以分别被“推入”和“弹出”SPIPE SAP终点。SPIPE SAP还支持在同一主机上执行的进程和/或线程间的字节流和按优先级排序的面向消息的数据的双向传送

FIFO SAP:封装UNIX命名管道机制(也称为FIFO)。不像STREAM管道,命名管道只提供从一或多个发送者到单一接收者的单向数据信道。而且,来自不同发送者的消息都被放入同一个通信信道。因而,在每一消息中必须明确地包含某种类型的多路分离标识符,以使接收者能够确定是哪一个发送者发送的消息。

ACE还提供了内存映射文件和系统V UNIX IPC机制的OO封装

划分依据:通信服务类型,通行角色,通信域

                                                                           ACE_SOCKET:

  

依据上图提供的ACE类层次,开始分析ACE源代码与C++设计模式.......

另附注ACE源代码结构

时间: 2024-10-29 04:58:50

ACE的相关文章

jeecg 3.5.2 新版本4种首页风格 【经典风格,shortcut风格,ACE bootstrap风格,云桌面风格】

[1]经典风格: [2]Shortcut风格: [3]ACE bootsrap风格: [4]云桌面风格: [5]自定义图表 [6].系统监控

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

?;ZnD(4?   评测介绍 1V-sibE   j|LOg 评测产品: 云引擎ACE服务 开发语言: PHP 评测人: mr_wid 评测时间: 2014年10月13日-19日 XV1XzG#C   .>p.k*vU   评测概要 9]:F!d/   fYlqaO4[   非常有幸能够申请到ACE的公测资格, 在本篇评测中, 笔者将以一个开发者的角度来对云引擎ACE服务进行介绍与使用.在本篇评测中, 您将看到: ACE能够做些什么 ACE应用的创建与发布 应用的配置与调试 ACE扩展服务的使

改造 Ace Admin 模板的 ace_tree 组件的 folderSelect 样式

*注:我用的Ace Admin版本为1.3.4 Ace Admin 是一个轻量,功能丰富,HTML5.响应式.支持手机及平板电脑上浏览的优秀管理后台模板. 关于tree的使用,html文件夹下treeview.html给了静态数据的例子,examples下treeview.html给了动态PHP语言的例子. 但是exmaple下的那个treeview,当参数“folderSelect=true”时:如图: 当点开 后,如图: 都不能再收起来,而我想改造成 folder点击选择,也象item样式一

5 ACE acceptor connector Proactor异步框架

ACE_Acceptor_Connector框架 完成accpet操作 [email protected]:~/ace/AceAcceptorConnector$ cat echo_server.cpp  #include <ace/Svc_Handler.h> #include <ace/SOCK_Stream.h> #include <ace/SOCK_Acceptor.h> #include <ace/Acceptor.h> class Accepto

使用 ACE 库框架在 UNIX 中开发高性能并发应用

使用 ACE 库框架在 UNIX 中开发高性能并发应用来源:developerWorks 中国 作者:Arpan Sen ACE 开放源码工具包可以帮助开发人员创建健壮的可移植多线程应用程序.本文讨论创建使用 ACE 线程的应用程序的一些方法.Adaptive Communication Environment (ACE) 是一个高性能.开放源码.面向对象的框架和 C++ 类库,它有助于简化网络应用程序的开发.ACE 工具包包括一个操作系统层和一个封装网络 API 的 C++ 外观(facade

Microsoft ACE OLEDB 12.0概念及用法

首先需要清楚几个概念: Database engine(数据引擎):一些预先存储于数据库中的组件: Microsoft JET (Joint Engine Technology):Microsoft Jet 数据引擎,1992年发行初版,主要运用于 Microsoft Accesss的数据连接,Jet引擎,仅能访问 Office97-2003: Microsoft ACE(Office Access Connectivity Engine ):随着Access 2007发布之后, Microso

ACE服务端编程4:ACE跨平台之运行时初始化和关闭

参考APG里的说法:平台差异及不兼容性的一个特别的方面,是对象的运行时初始化和程序关闭时这些对象的相应析构. ACE为了明确管理对象的清理,定义了ACE_Object_Manager类,这个类不仅涉及到对象的管理,还与ACE库的初始化与关闭相关. ACE中应用了大量的设计模式,本篇顺便研究ACE的程序入口函数替换机制分析. ACE库的初始化与关闭 应用要确保在使用ACE库时正确的初始化和关闭,有以下两种常用方式: 1.使用ACE_TMAIN宏作为程序入口函数: 2.使用ACE::init()和A

【阿里云产品公测】ACE安装WordPress博客图文教程

阿里云ace搭建wordpress图文教程 C?ib_K* 按照大大说的,wordpress确实能够轻松创建,只有几步. \0l>q ,    do*}syQ`O   ml0.$z   我想说,小白的世界技术大大还是不了解.想当初我了解一下怎么使用svn就研究了快一星期,天天下载软件,卸载软件,查看教程. 更别说前两天终于稍稍懂了一点的git(知道怎么上传文件了.)更是在年初bae支持git代码的时候研究,可是一直不入其门,拖拖踏踏就是大半年的时间. 555,不说了,说多了都是泪. uwf 5!

一篇文章贯穿ACE各种发送接收组件

通信过程 首先介绍一下socket通信的基本过程:这里先假设有两个家伙在通信,一个是S,另一个叫C (1)S打开端口监听本地的端口看看有没有人来连接: (2)与此同时C试图去连接远程的S,连接的地址就是S的地址加上S监听的端口号: (3)S收到C的请求之后,建立连接,双方共同持有连接的通道,可互相发送/接收数据任意次,此时S和C无区别: (4)其中一方断开连接,或者因为网络原因中断连接,另一方也会关闭: (5)此时通信过程结束: 整个过程如下图所示 普通的ACE通信类完成上面的通信过程: Tim

ACE线程管理

头文件 #include "ace/Thread_Manager.h" 等待所有线程的退出 ACE_Thread_Manager::instance()->wait(); 此函数执行的时候会等待所有线程退出之后再退出,为什么要等待所有线程的退出呢?因为多线程环境下程序的执行步骤和单线程不同,多线程环境下如果不等待所有线程都退出就会导致某些线程执行了一部分就退出,因为CPU不会把时间都给这一个线程. 退出当前的线程 ACE_Thread_Manager::instance()-&g