第0章 设计课题、中间件方案、ACE 1
0.1 网络应用面临的挑战 1
图表一览 2
0.1 独立应用体系 2
0.2 一个普通的网络应用环境 3
0.2 网络应用的设计空间 5
0.3 网络应用的设计空间 6
0.3 面向对象中间件方案 7
0.4 用环境下的面向对象中间件层次 8
目录 9
图表一览 9
序 11
0.4 ACE工具包概览 12
0.5 ACE的层次化体系结构 13
译序 15
关于本书 17
0.5 示例:一个网络日志服务程序 17
0.6 网络日志服务的参与者 18
0.6 小结 19
第1篇 面向对象网络编程 21
第1章 通信设计空间 23
1.1 无连接协议与面向连接协议 23
1.1 可选的连接多路复用策略 25
1.2 同步及异步消息交换策略 26
1.2 同步及异步消息交换 26
1.3 消息传递与共享内存 28
1.3 消息传递与共享内存 29
1.4 小结 31
2.1 操作系统IPC机制概述 33
第2章 SocketAPI概述 33
2.2 Socket API 34
2.3 SocketAPI的局限性 37
2.1 Socket空间分类图 42
2.4 小结 43
第3章 ACE Socket Wrapper Facade 45
3.1 概述 45
3.1 ACE面向连接的Socket类关系图 47
3.2 ACE Socket Wrapper Facade分类图 48
3.2 ACE_Addr类和ACE_INET_Addr类 49
3.3 ACE SocketWrapper Facade中的角色 49
3.4 ACE_Addr和ACE_IN T_Addr类图 51
3.3 ACE_IPC_SAP类 52
3.4 ACE_SOCK类 54
3.5 ACE_IPC_SAP和ACE_SOCK类图 54
3.5 ACE_SOCK Connector类 56
3.6 ACE_SOCK_Connector类图 57
3.6 ACE_SOCK_IO类和ACE_SOCK_Stream类 60
3.7 ACE_SOCK_Stream和ACE_SOCK_IO类图 62
3.7 ACE_SOCK_Acceptor类 64
3.8 ACE_SOCK Acceptor类图 65
3.8 小结 68
4.1 概述 71
第4章 网络日志服务程序的实现 71
4.2 ACE_Message_Block类 72
4.1 ACE_Message_Block类图 73
4.2 两种ACE_Message_Block 75
4.3 ACE_InputCDR类和ACE_OutputCDR类 76
4.3 ACE_InputCDR和ACE_OutputCDR类图 79
4.4 日志服务器的初始版本 80
4.4 日志服务器示例类 81
4.5 日志记录信息的消息块链 90
4.5 客户程序 95
4.6 小结 99
第2篇 并发式面向对象网络编程 101
第5章 并发设计空间 103
5.1 循环、并发及反应式服务器 103
5.1 循环式/反应式服务器与并发式服务器 104
5.2 进程与线程 109
5.2 多进程与多线程 109
5.3 进程/线程创建策略 112
5.4 “一个请求一个线程”式的“随需创建”策略 113
5.3 线程池“急式创建”策略 113
5.4 用户、核心及混合线程模型 114
5.5 N∶1与1∶1线程模型 115
5.6 N∶M混合线程模型 117
5.5 分时及实时调度级别 119
5.6 “基于任务”与“基于消息”的体系 121
5.7 “基于任务”与“基于消息”的并发体系 122
5.7 小结 123
6.1 同步事件多路分离 125
第6章 操作系统并发机制概述 125
6.2 多进程机制 127
6.3 多线程机制 129
6.4 同步机制 130
6.5 OS并发机制的局限性 135
6.6 小结 137
第7章 ACE同步事件多路分离Wrapper Facade 139
7.1 概述 139
7.1 ACE_Handle_Set和ACE_Handle_Set_Iterator类图 140
7.2 ACE_Handle_Set类 141
7.3 ACE_Handle_Set_Iterator类 147
7.4 ACE∷select()方法 151
7.2 反应式日志服务器的结构 153
7.5 小结 157
第8章 ACE进程Wrapper Facade 159
8.1 概述 159
8.1 ACE进程管理类关系图 160
8.2 ACE_Process类 161
8.2 ACE_Process类图 163
83 ACE_Process_Options类 165
8.3 ACE_Process_Options类图 167
8.4 ACE_Process_Manager类 169
8.4 ACE_Process_Manager类图 170
8.5 多进程日志服务器的结构 171
8.6 主进程/工作者进程的创建顺序(POSIX) 174
8.7 主进程/工作者进程的创建顺序(Win32) 174
8.5 小结 182
9.1 概述 185
第9章 ACE线程Wrapper Facade 185
9.2 ACE_Thread_Manager类 187
9.1 ACE_Thread_Manager类图 189
9.2 “一个连接一个线程”日志服务器的结构 192
9.3 ACE_Sched_Params类 198
9.3 ACE_Sched_Params类图 200
9.4 ACE_TSS类 201
9.4 ACE_TSS类图 203
9.5 小结 205
第10章 ACE同步Wrapper Facade 207
10.1 概述 207
10.1 ACE_LOCK伪类 209
10.2 ACE_Guard类 209
10.2 ACE_Guard系列类图 210
10.3 ACE互斥体类 212
10.4 ACE Readers/Writer Lock类 218
10.5 ACE信号量类 222
10.6 ACE条件变量类 229
10.3 ACE_Condition_Thread_Mutex类图 230
10.4 ACE_Recursive_Thread_Mutex类图 231
10.7 小结 233
附录A ACE C++WrapperFacade的设计原则 235
A.1 概述 235
A.2 通过Wrapper Facade增强类型安全性 236
A.3 简化常见情形 238
A.4 通过继承结构提高设计的清晰性和可扩充性 246
A.1 Socket API中的函数 247
A.5 尽可能地隐藏平台间的差异 248
A.2 ACE IPC地址的继承结构 248
A.6 针对效率实施优化 255
A.7 小结 257
附录B ACE的过去、现在和将来 259
B.1 ACE的演变 259
B.1 基于ACE且符合标准的中间件 264
B.2 未来之路 267
B.3 结束语 268
术语表 269
参考文献 285
索引 293