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源代码结构