ACE
Table of Contents
http://www.cs.wustl.edu/~schmidt/ACE.html
参考书籍:
- C++网络编程卷1(运用ACE和模式消除复杂性)
- C++网络编程卷2(基于ACE和框架的系统化复用)
1 网络应用体系
网络应用体系设计空间主要包含下面这几个部分:
- 通信协议及机制。网络应用进行交互的规则,形式和抽象层次。
- 并发体系。一些策略和机制,用来控制如何正确使用进程和线程,以表达多个服务实例,以及每个服务实例如何在内部使用多线程。
- 服务体系。网络应用服务的主要性质,比如每个服务实例的持续时间和结构。
- 服务配置策略。如何识别网络服务,何时将网络服务绑定在一起以构成完整的应用。
1.1 通信设计空间
对于通信设计我们需要考虑的问题包括:
- 无连接协议和面向连接协议。对于面向链接协议还需要考虑数据成帧策略,以及连接多路复用策略。
- 同步和异步信息交换。
- 消息传递和共享内存。
1.2 并发设计空间
对于并发设计我们需要考虑的问题包括:
- 循环,并发以及反应式服务器。这里所谓的反应式就是使用epoll来做通知,但是处理部分还是循环或者是并发。
- 进程线程选择以及创建策略。创建策略包括即式创建(eager spawning,预创建)以及随需创建(on-demand spawning).
- 用户,核心以及混合线程模型。
- 分时(time-shared)以及实时(real-time)调度级别。
- 基于任务与基于消息的体系。基于任务的并发体系根据应用程序中服务功能单元来组织CPU,而基于消息的并发体系是根据接收到的消息来组织CPU.
2 ACE体系结构
- ACE OS Adaption Layer.由一个名为ACE_OS类构成,包含500+静态方法来封装原始的基于C的OS API.
- ACE C++ Wrapper Facade Layer.由很多类组成,主要是将这些ACE_OS提供的静态类方法,封装成为独立类来使用。
- ACE Framework Layer.框架,比如ACE Reactor和Proactor框架
- ACE Service Layer.使用框架编写实现的各种服务,比如Logger Server,Name Server等。