ACE程序员指南:网络与系统编程的实用设计模式

ACE程序员指南:网络与系统编程的实用设计模式
作 者: Stephen Huston James CE Johnson Umar Syyid 马维达 马维达
出版社: 中国电力出版社
丛编项: 深入C++系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Stephen D.Huston是Riverace Corporation的总裁,向希望有效使用ACE开发项目的公司提供技术支持和咨询服务.他是《C++Network Programming》卷1及卷2的作者之一。

内容简介

·本书评语可移植、灵活、可扩展、可预测、可靠、可负担——如果你正在设计这样的软件和系统,本书及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以及其他更多内容。

图书目录

第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