ACE从功能上大致分为如下几个方面
ACE OS 层
ACE OS 层封装了平台相关的函数和定义,例如 ACE_OS::strlen,ACE_OS::closesocket 等,这些封装的意义在于使ACE做到与平台无关,一个比较好的例子是 socket 的定义,在 Linux 上为 int 类型,在 Windows 上为 SOCKET 类型,而ACE的 socket 定义是 ACE_Hanlde,它在不同的平台有不同的解释。ACE OS 层是所有 ACE 其他功能的基础。
ACE 结构对象化层
这个层提供了一系列的C++类封装平台相关的结构,一个比较好的例子是 ACE_INET_Addr,它封装了 sockaddr 结构,提供了诸如 get_port、get_host_name 等方法来使相关的操作更加容易。
ACE 操作系统对象的封装
操作系统对象例如 内存文件映射、线程、锁等,ACE 通过相应的类来提供对这些操作系统对象的封装
ACE 网络编程模式
对于每一个操作系统,都会有数种不同的网络编程模式,他们有的高效、有的易于编写,但总的来说,服务器的编程基本上可以划分成反应式(Reactor)和前摄式(Proactor)两种,反射式一般是基于同步的操作,前摄式一般基于异步的操作,ACE 提供了 ACE_Reactor 类和 ACE_Proactor 类封装了这两大类的编程模式,在大类下,又通过类继承提供了更加详细的实现。
ACE 服务器配置
ACE 通过 ACE_Service_Config 提供了服务器的配置功能。
ACE 工具类
例如,ACE 提供了诸如 ACE_Message_Block、ACE_Message_Queue 等类封装了读写的缓存操作。