书籍详情
ACE程序员指南:网络与系统编程的实用设计模式
作者:(美)Stephen D.Huston,(美)James CE Johnson,(美)Umar Syyid著;马维达译;马维达译
出版社:中国电力出版社
出版时间:2004-11-01
ISBN:9787508327341
定价:¥48.00
购买这本书可以去
内容简介
·本书评语可移植、灵活、可扩展、可预测、可靠、可负担——如果你正在设计这样的软件和系统,本书及ACE工具包将使得你在所有这些方面都变得更为得力。即使是用了十余年时间开发ACE,并用它构建了许多网络化软件应用之后,我发现我还是在这本书中学到了许多东西。我深信,你同样了会如此。——DouglasC.Schmidt,ACE的发明者,录自本书前言这是每一个ACE程序员的必备书籍。对于初学者而言,本书循序渐进地解释了ACE的入门之道。对于更有经验的程序员而言,它详细解释了每天都要使用的特性,同时它也是一本完美的参考手册。如果这本书早几年面世,我就会节省大量时间!——JohnnyWillemsen,荷兰RemedyIT公司高级软件工程师在拥有大型的C++代码库后,我们依靠ACE来建立跨平台的客户——服务器框架,以保证数据的质量和完整性。ACE改善了我们的设计,消除了OS的各种特异行为,而又没有牺牲性能或灵活性。对我们而言,ACE的在线参考资料和印刷出版的“大图景(bigpicture)”指南是不可缺少的助手,而在我的办公室的书架上,这本书占据了最优先的位置。——JohnLilley,DataLeverCorporation首席科学家在SITA空——地部门中,我们是为航空公司提供通信服务的主要供应者之一。我们在大约一年前开始使用ACE,现在正在把大部分新的与通信有关的开发工作移向ACE。可以说,在开发我们这种类型的应用时,这个工具包能减少至少50%的开发和测试时间。——JeanMillo,SITA高级架构师ADAPTIVECommunicationEnvironment(ACE)是一个开放源码软件工具包,可以帮助你应对网络编程中的各种挑战。ACE用C++编写而成,在30位核心开发者和1700位做出贡献的开发者的努力下,这个可移植的中间件已经演化成了一个强大的工具包,封闭并增强了广泛的原生OS功能,从而能用于开发性能驱动的软件系统。本书是一本实用的ACE指南,其读者对象是构建网络化应用和下一代中间件的C++程序员。本书首先向初学者介绍ACE,然后阐释怎样选择设计模式、框架以及ACE,用最少的时间和努力生产出有效的、易于维护的软件系统。本书着重讨论了各种编程辅助手段、进程间能信(IPC)问题、进程及线程管理、共享内存、ACEServiceConfigurator、定时器管理类、ACENamingService以及其他更多内容。
作者简介
Stephen D.Huston是Riverace Corporation的总裁,向希望有效使用ACE开发项目的公司提供技术支持和咨询服务.他是《C++Network Programming》卷1及卷2的作者之一。
目录
第1部分 ACE基础知识
第1章 ACE简介 3
1.1 ACE的历史 3
1.2 ACE的优势 4
1.3 ACE的组织结构 5
1.4 模式、类库和框架 5
1.5 把你的代码移植到多种操作系统 6
1.6 消除C++编译器之间的差异 8
1.7 同时使用窄字符和宽字符 15
1.8 到哪里寻求更多的信息和支持 16
1.9 小结 17
第2章 怎样构建ACE并在你的程序中使用它 18
2.1 关于ACE版本的说明 18
2.2 ACE Distribution指南 18
2.3 怎样构建ACE 20
2.4 怎样在你的应用中包含ACE 22
2.5 怎样构建你的应用 22
2.6 小结 26
第3章 使用ACE日志设施 27
3.1 基本的日志记录和跟踪 27
3.2 启用和禁用日志严重级别 32
3.3 定制ACE日志宏 35
3.4 重定向日志输出 41
3.5 使用回调 45
3.6 日志客户和服务器看守 49
3.7 LogManager类 53
3.8 通过ACE日志策略进行运行时配置 56
3.9 小结 58
第4章 收集运行时信息 59
4.1 命令行参数和ACE_Get_Opt 59
4.2 访问配置信息 63
4.3 构建参数向量 65
4.4 小结 66
第5章 ACE容器 67
5.1 容器的概念 67
5.2 序列容器 69
5.3 关联容器 80
5.4 分配器 89
5.5 小结 92
第2部分 进程间通信
第6章 基本的TCP/IP Socket用法 95
6.1 一个简单客户 95
6.2 给客户增加健壮性 99
6.3 构建一个服务器 104
6.4 小结 108
第7章 处理事件及多个I/O流 109
7.1 Reactor框架总览 109
7.2 处理多个I/O源 110
7.3 信号 120
7.4 通知 122
7.5 定时器 123
7.6 使用Acceptor-Connector框架 131
7.7 反应器实现 141
7.8 小结 144
第8章 异步I/O与ACE Proactor框架 145
8.1 为何使用异步I/O? 145
8.2 怎样发送和接收数据 146
8.3 建立连接 153
8.4 ACE_Proactor完成多路分离器 155
8.5 使用定时器 156
8.6 其他I/O工厂类 156
8.7 结合Reactor与Proactor框架 156
8.8 小结 158
第9章 其他IPC类型 159
9.1 基于UDP/IP的主机间IPC 159
9.2 主机内通信 163
9.3 小结 165
第3部分 进程与线程管理
第10章 进程管理 169
10.1 派生新进程 169
10.2 使用ACE_Process_Manager 174
10.3 使用ACE_Process_Mutex进行同步 178
10.4 小结 181
第11章 信号 182
11.1 使用包装 182
11.2 事件处理器 185
11.3 保护临界区 190
11.4 通过反应器管理信号 192
11.5 小结 192
第12章 基本的多线程编程 193
12.1 入门 193
12.2 基本的线程安全性 194
12.3 任务间通信 199
12.4 小结 206
第13章 线程管理 207
13.1 线程的类型 207
13.2 优先级与调度类 209
13.3 线程池 212
13.4 使用ACE_Thread_Manager进行线程管理 213
13.5 信号 216
13.6 线程启动挂钩 219
13.7 取消 220
13.8 小结 223
第14章 线程安全与同步 224
14.1 保护原语 224
14.2 线程同步 234
14.3 线程专有存储 240
14.4 小结 241
第15章 主动对象 242
15.1 模式 242
15.2 模式使用 245
15.3 小结 251
第16章 线程池 252
16.1 理解线程池 252
16.2 半同步/半异步模型 253
16.3 领导者/跟随者模型 263
16.4 线程池与反应器 267
16.5 小结 270
第4部分 ACE高级特性
第17章 共享内存 273
17.1 ACE_Malloc与ACE_Allocator 273
17.2 ACE_Malloc的持久功能 275
17.3 与位置无关的分配 278
17.4 用于容器的ACE_Malloc 281
17.5 包装 293
17.6 小结 294
第18章 ACE Streams框架 296
18.1 综述 296
18.2 使用单向流 297
18.3 双向流 312
18.4 小结 328
第19章 ACE Service Configurator框架 330
19.1 综述 330
19.2 配置静态服务 331
19.3 设置动态服务 336
19.4 设置流 338
19.5 在执行过程中重新配置服务 339
19.6 使用XML配置服务与流 340
19.7 不用svc.conf配置服务 341
19.8 单体与服务 342
19.9 小结 342
第20章 定时器 343
20.1 定时器概念 343
20.2 定时器队列 343
20.3 预先构建的分派器 351
20.4 管理事件处理器 353
20.5 小结 357
第21章 ACE Naming Service 358
21.1 ACE_Naming_Context 358
21.2 单进程命名上下文:PROC_LOCAL 359
21.3 在一个节点上共享命名上下文:NODE_LOCAL 367
21.4 在网络上共享命名上下文:NET_LOCAL 372
21.5 小结 374
参考书目 375
第1章 ACE简介 3
1.1 ACE的历史 3
1.2 ACE的优势 4
1.3 ACE的组织结构 5
1.4 模式、类库和框架 5
1.5 把你的代码移植到多种操作系统 6
1.6 消除C++编译器之间的差异 8
1.7 同时使用窄字符和宽字符 15
1.8 到哪里寻求更多的信息和支持 16
1.9 小结 17
第2章 怎样构建ACE并在你的程序中使用它 18
2.1 关于ACE版本的说明 18
2.2 ACE Distribution指南 18
2.3 怎样构建ACE 20
2.4 怎样在你的应用中包含ACE 22
2.5 怎样构建你的应用 22
2.6 小结 26
第3章 使用ACE日志设施 27
3.1 基本的日志记录和跟踪 27
3.2 启用和禁用日志严重级别 32
3.3 定制ACE日志宏 35
3.4 重定向日志输出 41
3.5 使用回调 45
3.6 日志客户和服务器看守 49
3.7 LogManager类 53
3.8 通过ACE日志策略进行运行时配置 56
3.9 小结 58
第4章 收集运行时信息 59
4.1 命令行参数和ACE_Get_Opt 59
4.2 访问配置信息 63
4.3 构建参数向量 65
4.4 小结 66
第5章 ACE容器 67
5.1 容器的概念 67
5.2 序列容器 69
5.3 关联容器 80
5.4 分配器 89
5.5 小结 92
第2部分 进程间通信
第6章 基本的TCP/IP Socket用法 95
6.1 一个简单客户 95
6.2 给客户增加健壮性 99
6.3 构建一个服务器 104
6.4 小结 108
第7章 处理事件及多个I/O流 109
7.1 Reactor框架总览 109
7.2 处理多个I/O源 110
7.3 信号 120
7.4 通知 122
7.5 定时器 123
7.6 使用Acceptor-Connector框架 131
7.7 反应器实现 141
7.8 小结 144
第8章 异步I/O与ACE Proactor框架 145
8.1 为何使用异步I/O? 145
8.2 怎样发送和接收数据 146
8.3 建立连接 153
8.4 ACE_Proactor完成多路分离器 155
8.5 使用定时器 156
8.6 其他I/O工厂类 156
8.7 结合Reactor与Proactor框架 156
8.8 小结 158
第9章 其他IPC类型 159
9.1 基于UDP/IP的主机间IPC 159
9.2 主机内通信 163
9.3 小结 165
第3部分 进程与线程管理
第10章 进程管理 169
10.1 派生新进程 169
10.2 使用ACE_Process_Manager 174
10.3 使用ACE_Process_Mutex进行同步 178
10.4 小结 181
第11章 信号 182
11.1 使用包装 182
11.2 事件处理器 185
11.3 保护临界区 190
11.4 通过反应器管理信号 192
11.5 小结 192
第12章 基本的多线程编程 193
12.1 入门 193
12.2 基本的线程安全性 194
12.3 任务间通信 199
12.4 小结 206
第13章 线程管理 207
13.1 线程的类型 207
13.2 优先级与调度类 209
13.3 线程池 212
13.4 使用ACE_Thread_Manager进行线程管理 213
13.5 信号 216
13.6 线程启动挂钩 219
13.7 取消 220
13.8 小结 223
第14章 线程安全与同步 224
14.1 保护原语 224
14.2 线程同步 234
14.3 线程专有存储 240
14.4 小结 241
第15章 主动对象 242
15.1 模式 242
15.2 模式使用 245
15.3 小结 251
第16章 线程池 252
16.1 理解线程池 252
16.2 半同步/半异步模型 253
16.3 领导者/跟随者模型 263
16.4 线程池与反应器 267
16.5 小结 270
第4部分 ACE高级特性
第17章 共享内存 273
17.1 ACE_Malloc与ACE_Allocator 273
17.2 ACE_Malloc的持久功能 275
17.3 与位置无关的分配 278
17.4 用于容器的ACE_Malloc 281
17.5 包装 293
17.6 小结 294
第18章 ACE Streams框架 296
18.1 综述 296
18.2 使用单向流 297
18.3 双向流 312
18.4 小结 328
第19章 ACE Service Configurator框架 330
19.1 综述 330
19.2 配置静态服务 331
19.3 设置动态服务 336
19.4 设置流 338
19.5 在执行过程中重新配置服务 339
19.6 使用XML配置服务与流 340
19.7 不用svc.conf配置服务 341
19.8 单体与服务 342
19.9 小结 342
第20章 定时器 343
20.1 定时器概念 343
20.2 定时器队列 343
20.3 预先构建的分派器 351
20.4 管理事件处理器 353
20.5 小结 357
第21章 ACE Naming Service 358
21.1 ACE_Naming_Context 358
21.2 单进程命名上下文:PROC_LOCAL 359
21.3 在一个节点上共享命名上下文:NODE_LOCAL 367
21.4 在网络上共享命名上下文:NET_LOCAL 372
21.5 小结 374
参考书目 375
猜您喜欢