主编推荐语
软件框架的设计始终代表着业界最高的设计水准,《设计模式》一书指出:如果说应用程序难以设计,那么工具箱就更难了,而框架则是最难的。
内容简介
本书从构架模式、编程示例和源代码3个维度系统地对经典网络框架ACE(Adaptive Communication Environment)的架构设计和实现原理进行了深入分析,它能解决4个方面的问题:第一,帮助框架设计者领略软件框架设计的普适原则和思想,进而设计出自己的软件框架;第二,帮助ACE应用开发人员加深对ACE框架的理解,提升开发水平,更好地去定制和扩展ACE框架,以及解决C++网络通信中的难题;第三,帮助C++开发人员加深C++语言功底,书中有大量对C++源代码的分析,包括网络编程、动态库编程和异步编程等,还涉及10余个经典的设计模式的解析;第四,增强平台开发人员和软件架构师的技术修养,ACE的设计和实现都极其优秀,它的实现源码和架构思想非常值得去学习和研究。
全书一共7章,详细分析了ACE的Reactor、Service Configurator、Task、Acceptor_Connector、Proactor和Streams等6个框架的架构设计与实现原理。每个框架的分析分为3部分:第一,框架的设计分析,每个框架(除Task框架)都有一个构架模式与之对应,构架模式阐述了框架的设计原理,给出了框架的总体结构,是学习框架的理论基础;第二,框架的应用分析,每个框架都有一个应用实例与之对应,应用实例既帮助读者了解框架的使用方法,又为读者提供了一个可以调试的应用程序,便于读者使用调试器探索框架的内部秘密;第三,框架的实现分析,这是本书的重点,对框架的实现原理进行了详细的分析,并且对重点的类和流程给出了UML类图和UML顺序图,可以让读者在短时间内掌握框架的实现技术。
目录
- 版权信息
- 前言
- 为什么写作本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第1章 概述
- 1.1 模式与框架
- 1.1.1 模式
- 1.1.2 框架
- 1.1.3 模式与框架的关系
- 1.2 ACE框架
- 1.3 关于本书
- 1.3.1 本书的内容
- 1.3.2 源代码的表示
- 1.3.3 测试组网
- 1.3.4 几个常用术语
- 1.4 ACE Socket封装器
- 1.4.1 示例分析
- 1.4.2 Socket IPC分析
- 1.4.3 ACE_SOCK_Acceptor类的分析
- 1.4.4 ACE_SOCK_Connector类的分析
- 1.5 进一步学习
- 1.6 总结
- 第2章 Reactor框架
- 2.1 Reactor构架模式
- 2.2 Reactor框架概述
- 2.3 Reactor框架应用示例
- 2.3.1 I/O事件处理器的实现
- 2.3.2 Accept事件处理器的实现
- 2.3.3 main函数
- 2.4 事件处理器接口实现
- 2.4.1 事件处理器接口的构造与析构
- 2.4.2 事件处理器接口的使用规范
- 2.5 Reactor管理器的设计分析
- 2.5.1 Reactor管理器接口分析
- 2.5.2 Bridge设计模式接口
- 2.5.3 ACE_Select_Reactor_Impl类的分析
- 2.5.4 ACE_Select_Reactor_T类的分析
- 2.6 I/O事件调度的分析
- 2.6.1 I/O事件调度集的设计
- 2.6.2 调度集操作函数的分析
- 2.6.3 I/O事件处理器仓库的分析
- 2.6.4 I/O事件注册流程的分析
- 2.6.5 I/O事件调度流程的分析
- 2.6.6 I/O事件删除流程的分析
- 2.7 信号量事件调度的分析
- 2.7.1 信号量事件管理器的分析
- 2.7.2 Reactor管理器中的信号量事件处理
- 2.7.3 信号量事件删除流程的分析
- 2.8 定时器事件调度的分析
- 2.8.1 定时器事件管理器的分析
- 2.8.2 定时器事件注册流程的分析
- 2.8.3 定时器事件调度流程的分析
- 2.8.4 定时器事件删除流程的分析
- 2.9 Notify事件调度的分析
- 2.9.1 Notify事件管理器的分析
- 2.9.2 Notify事件注册流程的分析
- 2.9.3 Notify事件调度流程的分析
- 2.10 进一步学习
- 2.11 总结
- 第3章 Service Configurator框架
- 3.1 Component Configurator构架模式
- 3.2 Configurator框架概述
- 3.3 Configurator框架应用示例1
- 3.3.1 配置文件
- 3.3.2 可配置组件
- 3.3.3 main函数
- 3.4 ACE动态库接口封装的分析
- 3.5 配置组件接口的分析
- 3.6 组件工厂函数的分析
- 3.7 组件配置器设计的分析
- 3.7.1 组件配置器控制接口的分析
- 3.7.2 组件配置器实现的分析
- 3.7.3 语法分析器的分析
- 3.8 动态库符号定位的分析
- 3.8.1 ACE_Location_Node类分析
- 3.8.2 ACE_Object_Node类的分析
- 3.8.3 ACE_Function_Node类的分析
- 3.9 配置组件仓库的分析
- 3.9.1 find函数
- 3.9.2 remove函数
- 3.9.3 suspend函数
- 3.9.4 resume函数
- 3.10 配置组件类型的分析
- 3.10.1 ACE_Service_Type类
- 3.10.2 ACE_Service_Type_Impl类
- 3.10.3 ACE_Service_Object_Type类
- 3.10.4 ACE_Service_Type_Factory类
- 3.11 指令解析功能的分析
- 3.12 配置文件解析流程的分析
- 3.13 Configurator框架应用示例2
- 3.13.1 可配置组件
- 3.13.2 配置文件
- 3.13.3 配置文件解析流程的分析
- 3.14 配置改变
- 3.15 Configurator框架应用示例3
- 3.15.1 静态配置组件
- 3.15.2 配置文件
- 3.15.3 静态配置组件分析
- 3.16 进一步学习
- 3.17 总结
- 第4章 Task框架
- 4.1 Task框架概述
- 4.2 Task框架应用示例
- 4.2.1 生产者
- 4.2.2 消费者
- 4.2.3 main函数
- 4.3 ACE消息队列实现分析
- 4.3.1 数据块结构分析
- 4.3.2 消息块结构的分析
- 4.3.3 消息队列实现的分析
- 4.4 ACE多线程编程
- 4.4.1 线程的创建
- 4.4.2 线程的运行
- 4.4.3 线程的退出
- 4.4.4 线程等待
- 4.5 Task框架接口的分析
- 4.5.1 ACE_Task_Base类
- 4.5.2 ACE_Task类
- 4.6 Active Object设计模式
- 4.6.1 模式概述
- 4.6.2 应用示例
- 4.6.3 ACE_Future和ACE_Future_Rep类
- 4.7 进一步学习
- 4.8 总结
- 第5章 Acceptor_Connector框架
- 5.1 Acceptor_Connector构架模式
- 5.2 Acceptor_Connector框架概述
- 5.3 Acceptor_Connector框架应用示例
- 5.3.1 open函数
- 5.3.2 handle_input函数
- 5.3.3 handle_close函数
- 5.3.4 main函数
- 5.4 服务处理器接口的分析
- 5.4.1 open函数
- 5.4.2 handle_close函数
- 5.4.3 close函数
- 5.4.4 shutdown函数
- 5.5 Acceptor设计的分析
- 5.5.1 ACE_Acceptor类
- 5.5.2 open函数
- 5.5.3 handle_input函数
- 5.5.4 handle_close函数
- 5.6 Connector设计的分析
- 5.6.1 ACE_Connector类
- 5.6.2 阻塞模式连接的分析
- 5.6.3 非阻塞模式连接的分析
- 5.7 进一步学习
- 5.8 总结
- 第6章 Proactor框架
- 6.1 Proactor构架模式
- 6.2 Proactor框架概述
- 6.3 Proactor框架应用示例
- 6.3.1 I/O事件完成处理器的实现
- 6.3.2 异步Acceptor的实现
- 6.3.3 main函数
- 6.4 事件完成处理器接口的分析
- 6.5 Proactor管理器的设计分析
- 6.5.1 Proactor管理器接口的分析
- 6.5.2 Bridge设计模式接口
- 6.5.3 ACE_POSIX_Proactor接口分析
- 6.6 异步操作初始化器和操作结果分析
- 6.6.1 公共接口介绍
- 6.6.2 ACE_POSIX_Asynch_Operation类
- 6.6.3 ACE_POSIX_Asynch_Result类
- 6.6.4 ACE_POSIX_Asynch_Read_Stream_Result类
- 6.6.5 ACE_POSIX_Asynch_Read_Stream类
- 6.7 ACE_POSIX_AIOCB_Proactor管理器实现的分析
- 6.7.1 构造函数
- 6.7.2 start_aio函数
- 6.7.3 handle_events_i函数
- 6.7.4 find_completed_aio函数
- 6.7.5 start_deferred_aio函数
- 6.7.6 application_specific_code函数
- 6.8 异步非I/O事件调度的分析
- 6.8.1 ACE_AIOCB_Notify_Pipe_Manager类
- 6.8.2 post_completion函数
- 6.8.3 putq_result函数
- 6.8.4 process_result_queue函数
- 6.9 定时器事件调度的分析
- 6.9.1 定时器事件操作结果的分析
- 6.9.2 定时器管理器实现的分析
- 6.10 网络连接之accept事件调度的分析
- 6.10.1 Reactor任务分析
- 6.10.2 异步Acceptor分析
- 6.10.3 ACE_POSIX_Asynch_Accept类
- 6.10.4 ACE_POSIX_Asynch_Accept_Result类
- 6.10.5 ACE_Asynch_Acceptor类
- 6.11 Proactor框架的调度分析
- 6.11.1 调度函数分析
- 6.11.2 退出调度分析
- 6.12 进一步学习
- 6.13 总结
- 第7章 Streams框架
- 7.1 管道和过滤器构架模式
- 7.2 Streams框架的概述
- 7.2.1 ACE_Task类
- 7.2.2 put函数
- 7.2.3 put_next函数
- 7.3 Streams框架应用示例
- 7.3.1 Logrec_Reader类
- 7.3.2 Logrec_Timer类
- 7.3.3 Logrec_Suffix类
- 7.3.4 Logrec_Writer类
- 7.3.5 main函数
- 7.4 ACE_Module类的分析
- 7.4.1 open函数
- 7.4.2 link函数
- 7.4.3 ACE_Module的关闭
- 7.5 ACE_Stream类的分析
- 7.5.1 构造函数
- 7.5.2 open函数
- 7.5.3 push函数
- 7.5.4 close函数
- 7.6 进一步学习
- 7.7 总结
- 参考文献
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。