基于C++ CORBA高级编程PDF电子书下载
- 电子书积分:20 积分如何计算积分?
- 作 者:(美)Michi Henning,(美)Steve Vinoski著;徐金梧等译
- 出 版 社:北京:清华大学出版社
- 出版年份:2000
- ISBN:7302039569
- 页数:740 页
第1章 导论 1
1.1 简介 1
1.2 本书内容的组织 2
1.3 CORBA版本问题 3
1.4 源代码示例 3
1.5 有关软件供应商 4
1.6 如何与作者联系 4
第1部分 CORBA简介 5
第2章 CORBA概述 5
2.1 简介 5
2.2 对象管理组 6
2.3 概念和术语 7
2.4 CORBA特性 9
2.4.1 一般请求流 9
2.4.2 OMG接口定义语言 10
2.4.3 语言映射 11
2.4.4 操作调用和调度软件 12
2.4.5 对象适配器 13
2.4.6 ORB间协议 14
2.5 请求调用 14
2.5.1 对象引用语义 15
2.5.2 引用的获取 17
2.5.3 对象引用的内容 18
2.5.4 引用和代理 19
2.6 CORBA应用程序的一般开发过程 20
2.7 本章小结 22
第3章 一个最小的CORBA应用程序 23
3.1 本章概述 23
3.2 编写和编译一个IDL定义 23
3.3 编写和编译一个服务器程序 24
3.4 编写和编译一个客户机程序 28
3.6 本章小结 31
3.5 运行客户机和服务器程序 31
第2部分 CORBA的核心 33
第4章 OMG接口定义语言 33
4.1 本章概述 33
4.2 简介 33
4.3 编译 34
4.3.1 单个的客户机和服务器程序的开发环境 34
4.3.2 客户机和服务器程序的不同开发环境 35
4.4 源文件 36
4.4.1 文件的命名 36
4.4.2 文件格式 36
4.5.2 关键字 37
4.5.1 注释 37
4.5.3 标识符 37
4.4.3 预处理 37
4.4.4 定义的顺序 37
4.5 词法规则 37
4.6 基本的IDL类型 38
4.6.1 整型 39
4.6.2 浮点类型 39
4.6.3 字符 39
4.6.6 八位字节 40
4.6.7 any类型 40
4.6.5 布尔量 40
4.6.4 字符串 40
4.7 用户定义类型 41
4.7.1 命名类型 41
4.7.2 枚举 41
4.7.3 结构 42
4.7.4 联合 43
4.7.5 数组 45
4.7.6 序列 45
4.7.7 序列与数组 46
4.7.8 递归类型 47
4.7.9 常量定义和字面值 49
4.7.10 常量表达式 51
4.8 接口和操作 52
4.8.1 接口语法 53
4.8.2 接口语义和对象引用 54
4.8.3 接口通信模型 55
4.8.4 操作定义 55
4.9 用户异常 58
4.9.1 异常设计问题 59
4.10 系统异常 61
4.11 系统异常或用户异常 63
4.12 单向操作(oneway operation) 64
4.13 上下文(contexts) 65
4.14 属性(Attributes) 66
4.15 模块(Modules) 67
4.16 前向声明(Forward Declarations) 68
4.17 继承(Inheritance) 70
4.17.1 从类型object中隐含的继承 70
4.17.2 空接口(Empty Interface) 71
4.17.3 接口与实现的继承 72
4.17.5 继承的限定 73
4.17.4 继承的重定义规则 73
4.17.6 多重继承 74
4.17.7 多重继承的限定 75
4.18 名称和作用域 76
4.18.1 命名作用域 76
4.18.2 区分大小写 76
4.18.3 在嵌套作用域中的名称 77
4.18.4 名称查找规则 77
4.19 仓库标识符和pragma指令 79
4.19.1 IDL的仓库ID格式 79
4.19.2 prefix的附注 80
4.19.4 使用ID附注来控制仓库的ID格式 81
4.19.3 版本(version)附注 81
4.20 标准的include文件 82
4.21 最新的IDL扩展 82
4.21.1 宽位字符和字符串 82
4.21.2 64位整型 83
4.21.3 扩展的浮点类 83
4.21.4 定点十进制类型 83
4.21.5 转义标识符 84
4.22 本章小结 85
5.2.1 温度计 86
5.2 气温控制系统 86
第5章 一个气温控制系统的IDL 86
5.1 本章概述 86
5.2.2 恒温器 87
5.2.3 监测站 87
5.3 气温控制系统的IDL 87
5.3.1 温度计的IDL 88
5.3.2 恒温器的IDL 88
5.3.3 控制器的IDL 89
5.4 完整的程序 92
6.2 简介 94
第6章 基本的IDL到C++的映射 94
6.1 本章概述 94
6.3 标识符的映射 95
6.4 模块的映射 96
6.5 CORBA模块 97
6.6 基本类型的映射 97
6.6.1 64位整型和long double类型 98
6.6.2 基本类型的重载 98
6.6.6 字符串和宽位字符串映射 99
6.6.5 Boolean映射 99
6.6.4 wchar的映射 99
6.6.3 可映射成char的类型 99
6.7 常量的映射 100
6.8 枚举类型的映射 102
6.9 变长度的类型与_var类型 102
6.9.1 _var类型的使用 103
6.9.2 变长度类型的内存管理 105
6.10 String_var封装类 106
6.10.1 使用String_var的缺陷 109
6.10.2 将字符串作为传递参数以读取字符串 111
6.10.3 将字符串作为传递参数以更改字符串 112
6.10.4 隐式类型转换产生的问题 113
6.10.5 取得对字符串的所有权 115
6.10.6 流运算符 116
6.11 宽位字符串的映射 116
6.12 定点数类型的映射 116
6.12.1 构造函数 117
6.12.2 存取函数 118
6.12.3 转换运算符 118
6.12.4 截断与舍入 118
6.13.1 定长度结构的映射 119
6.13 结构的映射 119
6.12.6 流运算符 119
6.12.5 算术运算符 119
6.13.2 变长度结构的映射 120
6.13.3 结构的内存管理 122
6.13.4 包含结构成员的结构 123
6.14 序列的映射 124
6.14.1 无界序列的映射 124
6.14.2 有界序列的映射 134
6.14.3 序列使用中的一些限制 135
6.14.4 序列的使用规则 137
6.15 数组的映射 137
6.16 联合的映射 139
6.16.1 联合的初始化和赋值 140
6.16.2 联合的成员与鉴别器的访问 141
6.16.3 没有default语句的联合 142
6.16.4 包含复杂成员的联合 144
6.16.5 使用联合的规则 145
6.17 递归结构和递归联合的映射 146
6.18 类型定义的映射 146
6.19 用户定义类型和_var类 147
6.19.1 用于结构、联合和序列的_var类 148
6.19.2 _var类的简单使用 149
6.19.4 定长度的结构、联合和序列与变长度的结构、联合和序列之间的区别 150
6.19.3 使用_var类的一些缺陷 150
6.19.5 数组的_var类型 152
6.20 本章小结 155
第7章 客户端的C++映射 156
7.1 本章概述 156
7.2 简介 156
7.3 接口的映射 156
7.4 对象引用类型 157
7.5 对象引用的生命周期 158
7.5.1 删除引用 159
7.5.2 引用拷贝 160
7.5.3 引用计数值的范围 161
7.5.4 空引用 161
7.6 _ptr引用的语义 163
7.6.1 代理与_ptr引用的映射 163
7.6.2 继承与拓展 165
7.6.3 紧缩转换 167
7.6.4 类型安全的紧缩(Narrowing) 167
7.6.5 非法使用_ptr引用 168
7.7 伪对象 169
7.8 ORB的初始化 170
7.9 初始引用 171
7.9.1 将字符串转换成引用 172
7.9.2 将引用转换成字符串 174
7.10 字符串化引用 175
7.10.1 初始的字符串化引用 175
7.10.2 字符串化引用的长度 175
7.10.3 字符串化引用的互用性 176
7.10.4 字符串化引用的规则 176
7.11 对象伪接口 176
7.11.1 _is_a操作 177
7.11.2 _non_existent操作 178
7.11.3 _is_equivalent操作 180
7.11.4 _hash操作 181
7.11.5 Object操作映射小结 182
7.12 _var引用 182
7.12.1 _var引用的映射 183
7.12.2 _var引用与拓展 186
7.12.3 同时使用_var和_ptr引用 187
7.12.4 嵌套在用户定义类型中的引用 189
7.12.5 _var类型的效率 190
7.13 操作与属性的映射 191
7.13.1 操作的映射 191
7.13.2 属性的映射 192
7.14 参数传递规则 193
7.14.1 定长度类型与变长度类型 194
7.14.2 生成的_out类型 195
7.14.3 简单类型的参数传递 195
7.14.4 复杂的定长度类型的参数传递 196
7.14.5 包含定长度元素的数组的参数传递 197
7.14.6 变长度参数的内存管理 200
7.14.7 字符串和宽位字符串的参数传递 203
7.14.8 复杂变长度类型和Any类型的参数传递 205
7.14.9 包含变长度元素数组的参数传递 206
7.14.10 对象引用的参数传递 208
7.14.11 参数传递规则的小结 209
7.14.12 使用_var类型来传递参数 210
7.14.13 释放out参数和使用_out类型的目的 213
7.14.14 参数的只读性质 215
7.14.15 参数传递的陷阱 216
7.15 异常映射 218
7.15.1 系统异常的映射 220
7.15.2 系统异常的语义 223
7.15.3 用户异常的映射 226
7.15.4 异常说明 227
7.15.6 ostream插入符 228
7.15.5 异常和out参数 228
7.15.7 不支持异常的编译器中的映射 229
7.16 上下文的映射 230
7.17 本章小结 230
第8章 开发气温控制系统的客户程序 231
8.1 本章概述 231
8.2 简介 231
8.3 客户程序的总体结构 231
8.4 包含文件 232
8.5 辅助函数 233
8.5.1 显示装置的具体内容 233
8.5.2 打印出错异常信息 235
8.6 main函数 237
8.6.1 初始化 237
8.6.2 与服务器程序的交互 238
8.7 完整的客户程序代码 243
8.8 本章小结 248
第9章 服务器端C++映射 250
9.1 本章概述 250
9.2 简介 250
9.3 接口的映射 251
9.4 伺服类 252
9.5 对象的实体 253
9.6 服务器程序的main函数 254
9.7 参数传递规则 256
9.7.1 简单类型的参数传递 256
9.7.2 复杂的定长度类型的参数传递 257
9.7.3 包含定长度元素数组的参数传递 258
9.7.4 字符串和宽位字符串的参数传递 260
9.7.5 复杂的变长度类型和any类型的参数传递 262
9.7.6 包含变长度元素数组的参数传递 265
9.7.7 对象引用的参数传递 267
9.8 引发异常 270
9.8.1 异常发送的具体细节 271
9.8.2 发送CORBA系统异常 272
9.8.3 管理出现异常的内存 272
9.9 Tie类 275
9.9.1 tie类的具体细节 275
9.9.2 tie伺服程序的具体化 276
9.9.3 tie类的评价 277
9.10 本章小结 278
10.3 仪器控制协议的API 280
10.2 简介 280
10.1 本章概述 280
第10章 开发气温控制系统的服务器程序 280
10.3.1 添加和删除装置 281
10.3.2 读取属性值 282
10.3.3 写属性值 282
10.4 设计温度计的伺服类 283
10.5 实现温度计的伺服类 285
10.5.1 Thermometer_impl辅助函数 285
10.5.2 Thermometer_impl的IDL操作 286
10.6 设计恒温器的伺服类 287
10.5.3 Thermometer_impl的构造函数和析构函数 287
10.7 实现Thermostat的伺服类 289
10.7.1 Thermostat_impl辅助函数 289
10.7.2 Thermostat_impl的IDL操作 291
10.7.3 Thermostat_impl的构造函数和析构函数 291
10.8 设计控制器的伺服类 292
10.9 实现控制器的伺服类 294
10.9.1 Controller_impl辅助函数 294
10.9.2 实现list操作 294
10.9.3 实现change操作 295
10.9.4 实现find操作 296
10.10 实现服务器程序的main函数 298
10.11.1 server.hh头文件 299
10.11 完整的服务器程序代码 299
10.11.2 server.cc实现文件 302
10.12 本章小结 310
第11章 可移植的对象适配器 311
11.1 本章概述 311
11.2 简介 311
11.3 POA基本原理 311
11.3.1 基本的请求调度 313
11.3.2 关键的POA实体 313
11.4 POA策略 314
11.4.1 CORBA对象生存期范围 315
11.4.2 对象标识符 316
11.4.3 对象到伺服程序之间的映射 318
11.4.4 隐式激活 320
11.4.5 请求与伺服程序之间的匹配 320
11.4.6 ObjectId到伺服程序的关联 321
11.4.7 请求到线程的分配 322
11.4.8 策略工厂操作(Policy Factory Operations) 323
11.5 POA创建 324
11.6 Servant IDL类型 327
11.6.1 CCS::Thermometer伺服程序 328
11.7.1 对象创建 330
11.7 对象创建和激活 330
11.7.2 伺服程序注册 336
11.7.3 伺服程序管理器 340
11.7.4 默认的伺服程序 351
11.7.5 伺服程序内存管理 356
11.7.6 请求处理 359
11.8 引用、ObjectId和伺服程序 360
11.9 对象失效 362
11.10 请求流控制 364
11.11 ORB事件处理 367
11.11.2 非阻塞事件处理 368
11.11.1 阻塞事件处理 368
11.11.3 应用程序停止运行 369
11.12 POA激活 372
11.13 POA析构 377
11.14 应用POA策略 378
11.14.1 多线程问题 379
11.14.2 ObjectId赋值 380
11.14.3 激活 380
11.14.4 时空折衷 380
11.14.5 关于生命范围的考虑 382
11.15 本章小结 385
12.2 简介 386
第12章 对象生命周期 386
12.1 本章概述 386
12.3 对象工厂 387
12.3.1 工厂设计选项 388
12.3.2 用C++实现工厂 393
12.4 撤消、拷贝以及移动对象 396
12.4.1 撤消对象 398
12.4.2 拷贝对象 405
12.4.3 移动对象 407
12.5.1 设计的通则 408
12.5 对生命周期服务的评论 408
12.4.4 通用工厂 408
12.5.2 发布日期 409
12.5.3 使用move操作的问题 409
12.5.4 接口的粒度 411
12.5.5 在什么情况下使用生命周期服务 412
12.6 Evictor模式 412
12.6.1 基本的收回策略 413
12.6.2 维护LRU顺序 415
12.6.3 使用伺服程序定位器实现收回模型 416
12.6.4 对使用伺服程序定位器的收回模型的评价 419
12.6.5 使用伺服程序激活器来实现收回模型 420
12.6.6 对使用伺服程序激活器的收回模型的评价 424
12.6.7 与汇集管理器操作的交互 425
12.7 伺服程序的无用存储单元回收 427
12.7.1 客户机意外行为的处理 427
12.7.2 通过关机进行无用存储单元回收 428
12.7.3 使用收回模型进行无用存储单元回收 429
12.7.4 使用超时进行无用存储单元回收 429
12.7.6 每个对象逆向保持激活 430
12.7.5 显式保持激活 430
12.7.7 每个客户逆向保持激活 431
12.7.8 检测客户的断连 432
12.7.9 分布式引用计数 432
12.7.10 选择方案小结 433
12.8 CORBA对象的无用存储单元回收 433
12.8.1 太平洋问题 434
12.8.2 引用完整性 435
12.8.3 无用存储单元回收的未来 435
12.9 本章小结 435
13.2 GIOP概述 436
13.1 本章概述 436
13.2.1 传输假设 436
第13章 GIOP,IIOP和IOR 436
第3部分 CORBA机理 436
13.3 公共数据表示 437
13.3.1 CDR数据对齐 438
13.4 GIOP消息格式 440
13.4.1 Request消息格式 443
13.4.2 Reply消息格式 445
13.4.3 其他消息格式 446
13.5 GIOP连接管理 447
13.6 检测无序的关闭 448
13.7 IIOP综述 449
13.8 IOR的结构 450
13.9 双向IIOP 452
13.10 本章小结 453
第14章 实现仓库和绑定 454
14.1 本章概述 454
14.2 绑定模式 454
14.3 直接绑定 454
14.3.1 暂态引用的直接绑定 455
14.3.2 持久引用的直接绑定 456
14.4 通过实现仓库的间接绑定 457
14.4.1 实现仓库的标准一致性 457
14.4.2 实现仓库结构 458
14.4.3 定位域 459
14.4.4 服务器程序和实现仓库之间的相互影响 460
14.4.5 通过实现仓库的绑定 460
14.4.6 绑定优化 462
14.5 迁移、可靠性、性能和可扩展性 465
14.5.1 小定位域 465
14.5.2 大定位域 465
14.5.3 冗余的实现仓库 465
14.5.4 对象迁移的粒度 466
14.6 激活模式 467
14.5.5 跨定位域边界的迁移 467
14.7 竞争状态 468
14.7.1 激活期间的竞争状态 468
14.7.2 关闭期间的竞争状态 469
14.7.3 服务器程序关闭和重新绑定 469
14.8 安全性考虑 470
14.8.1 服务器程序的权限 470
14.8.2 远程仓库访问 471
14.8.3 通过防火墙的IIOP 472
14.9 本章小结 472
15.2 简介 474
15.1 本章概述 474
第15章 any类型的C++映射 474
第4部分 动态CORBA 474
15.3 any类型C++映射 477
15.3.1 构造函数,析构函数和赋值 478
15.3.2 基本类型 478
15.3.3 重载不可区分的类型 480
15.3.4 无界的字符串的插入和提取 482
15.3.5 有界的字符串的插入和提取 483
15.3.6 宽位字符串的插入和提取 485
15.3.7 定点类型的插入和提取 485
15.3.8 用户定义类型 486
15.3.9 插入和提取Any 491
15.3.10 插入和提取异常 492
15.4 类型定义中易出现的问题 493
15.5 本章小结 494
第16章 类型代码 495
16.1 本章概述 495
16.2 简介 495
16.3 TypeCode伪对象 495
16.3.1 适用于所有类型代码的类型和操作 497
16.3.2 类型代码参数 498
16.3.3 作为值的类型代码 502
16.4 TypeCode伪对象的C++映射 503
16.5 类型代码比较 513
16.5.1 TypeCode::equal的语义 514
16.5.2 TypeCode::equivalent的语义 515
16.5.3 为什么让类型代码中的名称是可选项 516
16.5.4 类型代码比较的可移植性 517
16.5.5 从any类型提取的语义 517
16.6.1 内置类型的常量 518
16.6 类型代码常量 518
16.5.7 get_compact_typecode操作 518
16.5.6 结构上的等价 518
16.6.2 自定义类型的常量 520
16.7 any类型的类型代码比较 521
16.7.1 控制在Any类型中插入的别名信息 521
16.7.2 检验从Any类型中提取的别名信息 521
16.8 动态创建类型代码 522
16.8.1 用于类型代码创建的IDL 522
16.8.2 类型代码创建的C++映射 525
16.9 本章小结 529
17.3 DynAny接口 530
17.2 简介 530
17.1 本章概述 530
第17章 DynAny类型 530
17.3.1 局部约束 531
17.3.2 用于DynAny的IDL 531
17.3.3 用于DynEnum的IDL 536
17.3.4 用于DynStruct的IDL 536
17.3.5 用于DynUnion的IDL 537
17.3.6 用于DynSequence的IDL 537
17.3.8 用于DynFixed的IDL 538
17.3.7 用于DynArray的IDL 538
17.4 DynAny伪对象的C++映射 539
17.4.1 简单类型的DynAny应用 539
17.4.2 使用DynEnum 541
17.4.3 使用DynStruct 543
17.4.4 使用DynUnion 546
17.4.5 使用DynSequence 549
17.5 用于通用显示的DynAny 549
17.6 获得类型信息 551
17.6.1 从OMG接口仓库获得类型信息 551
17.6.3 从表达式获得类型信息 552
17.7 本章小结 552
17.6.2 从转换表中获得类型信息 552
第5部分 CORBA服务 553
第18章 OMG命名服务 553
18.1 本章概述 553
18.2 简介 553
18.3 基本概念 553
18.4 命名服务IDL的结构 555
18.5 名称的语义 555
18.5.1 名称结构 555
18.5.2 名称的表达 556
18.5.4 不支持宽位字符串 557
18.5.3 kind字段的作用 557
18.5.5 名称的等价性 558
18.5.6 绝对与相对名称 558
18.5.7 名称解析 559
18.6 命名上下文的IDL 559
18.6.1 命名服务中的异常 559
18.6.2 上下文的生命周期 561
18.6.3 获得初始命名上下文 562
18.6.4 创建一个绑定 563
18.6.5 建立一个命名图 564
18.6.6 重绑定 567
18.6.7 取消绑定 569
18.6.8 正确地撤消上下文 570
18.6.9 解析名称 571
18.7 迭代器 573
18.7.1 使用迭代器的必要性 573
18.7.2 拉迭代器 574
18.7.3 推迭代器 575
18.7.4 命名服务迭代器 576
18.8 命名服务中容易出错的地方 579
18.9 名称库 580
18.10 命名服务工具 581
18.11 怎样公告对象 581
18.13 联邦化命名 582
18.12 公告的时机 582
18.13.1 完全连接的联邦化结构 583
18.13.2 层次化的联邦结构 584
18.13.3 混合结构 585
18.14 给气温控制系统增加命名 586
18.14.1 通用的辅助函数 586
18.14.2 更新气温控制系统的服务器程序 589
18.14.3 更新气温控制系统的客户程序 590
18.15 本章小结 591
19.3.1 基本的交易概念 592
19.3 交易的概念和术语 592
19.1 本章概述 592
第19章 OMG交易服务 592
19.2 简介 592
19.3.2 服务类型和IDL接口类型 593
19.3.3 服务请求 594
19.3.4 约束表达式 594
19.3.5 联邦 594
19.3.6 动态属性 595
19.3.7 代理提供源 595
19.3.8 优先权 596
19.3.9 策略 596
19.5 服务类型仓库 597
19.4 IDL概述 597
19.5.1 属性 598
19.5.2 服务类型的继承 600
19.5.3 服务类型仓库的IDL 602
19.5.4 在C++内使用服务类型仓库 608
19.6 交易接口 610
19.6.1 主要接口 612
19.6.2 抽象基接口 612
19.7.1 export操作的IDL定义 614
19.7 导出服务提供源 614
19.6.4 公共类型 614
19.6.3 迭代器 614
19.7.2 导出服务提供源的C++代码 617
19.7.3 附加属性 618
19.8 收回服务提供源 619
19.9 改变服务提供源 620
19.10 交易程序约束语言 621
19.10.1 字面值 621
19.10.2 标识符 622
19.10.3 比较运算符 622
19.10.7 子串的匹配 623
19.10.8 存在性测试 623
19.10.4 算术运算符 623
19.10.6 集合成员 623
19.10.5 布尔运算符 623
19.10.9 优先权 624
19.10.10 约束语言的示例程序 624
19.11 导入服务提供源 625
19.11.1 Lookup接口的IDL 625
19.11.2 编制一个简单的查询(Query)程序 627
19.11.3 OfferInterator接口 629
19.11.4 控制query返回的细节 632
19.11.5 使用优先权 633
19.11.6 导入策略 634
19.12 成批收回 637
19.13 Admin接口 638
19.13.1 设定配置值 638
19.13.2 检索服务提供源ID 639
19.14 检测服务提供源 639
19.15 导出动态属性 640
19.16 交易程序联邦 643
19.16.1 链接和联邦的策略 643
19.16.2 请求标识符 645
19.16.3 指定一个起始的交易 646
19.16.4 Link接口 646
19.16.5 定位交易程序的Register接口 650
19.16.6 联邦和导入策略 651
19.17 交易程序工具 652
19.18 交易程序的体系结构 652
19.19 如何发布公告 654
19.20 避免重复服务提供源 654
19.21 向气温控制系统添加交易 655
19.21.1 为控制器创建服务类型 655
19.21.2 为控制器导出服务提供源 657
19.21.3 向控制器导入引用 658
19.22 本章小结 659
第20章 OMG事件服务 660
20.1 本章概述 660
20.2 简介 660
20.3 分布式回调 660
20.3.1 回调的示例 661
20.3.2 回调出现的问题 662
20.3.3 分布式回调的评价 664
20.4 事件服务基础 665
20.4.1 经典的推模型 666
20.4.2 经典的拉模型 666
20.4.3 混合推/拉模型 666
20.4.4 混合拉/推模型 667
20.4.5 混合事件模型 667
20.5 事件服务接口 668
20.5.1 推模型接口 669
20.5.2 拉模型接口 670
20.5.3 事件通道接口 670
20.5.4 事件通道的联邦 673
20.6.1 获得一个EventChannel引用 675
20.6 实现使用者和提供者 675
20.6.2 实现一个推提供者 676
20.6.3 实现一个推使用者 677
20.6.4 实现一个拉提供者 679
20.6.5 实现一个拉使用者 683
20.7 选择一个事件模型 684
20.7.1 事件通道的实现 685
20.7.2 推模型浅析 685
20.8.2 可靠性的缺陷 686
20.8.1 多个提供者 686
20.8 事件服务的局限性 686
20.7.3 拉模型浅析 686
20.8.3 筛选性的缺陷 687
20.8.4 工厂的缺陷 687
20.8.5 异步消息传送 687
20.9 本章小结 688
第6部分 功能强大的CORBA 689
第21章 多线程应用程序 689
21.1 本章概述 689
21.2 简介 689
21.3 多线程编程的动机 689
21.3.1 请求的排队 689
21.3.2 事件处理 690
21.3.3 单线程服务器程序的评价 691
21.3.4 多线程编程的优点 692
21.4 多线程服务器程序的基础 692
21.4.1 ORB底层的多线程问题 693
21.4.2 POA多线程问题 694
21.4.3 伺服程序的多线程问题 695
21.4.4 第三方库问题 696
21.4.5 ORB事件处理的多线程问题 696
21.5 多线程策略 697
21.6 实现多线程服务器程序 697
21.6.1 CCS生命周期操作的复习 698
21.6.2 总体的应用程序问题 699
21.6.3 并发性问题 700
21.6.4 Controller_impl伺服类 700
21.6.5 创建操作的实现 702
21.6.6 Devicelocator_impl伺服程序定位器 704
21.6.7 实现preinvoke 705
21.6.8 实现温度计的伺服程序 707
21.6.9 多线程收回器的评价 708
21.7 伺服程序激活器和收回器模式 709
21.8 本章小结 710
22.3 减少消息开销 711
22.2 简介 711
第22章 性能、可扩展性和可维护性 711
22.1 本章概述 711
22.3.1 基本IIOP性能限制 712
22.3.2 粗操作 713
22.3.3 粗略对象模型 716
22.3.4 客户端高速缓冲存取 718
22.4.2 为每个对象创造单独的伺服程序 719
22.4.3 伺服程序的定位器和激活器 719
24.4.4 收回器模式 719
22.4.1 线程化服务器程序 719
22.4 优化服务程序的实现 719
22.4.5 默认伺服程序 720
22.4.6 定制对象引用 720
22.4.7 服务器端高速缓存 720
22.5 联邦服务 720
22.6 改进物理设计 721
22.7 本章小结 723
附录A ICP模拟器的源代码 724
附录B CORBA资源 733
参考文献 735
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《全国职业院校工业机器人技术专业规划教材 工业机器人现场编程》(中国)项万明 2019
- 《编程超有趣 奇妙Python轻松学 第1辑》HelloCode人工智能国际研究组 2018
- 《我的第一套编程启蒙绘本 看事件 开始了》编程猫教研团队编绘 2019
- 《STEM教育丛书 麦昆机器人和Micro:bit图形化编程》张弛责任编辑;(中国)陈宝杰,沙靓雯 2019
- 《ROS机器人编程与SLAM算法解析指南》陶满礼 2020
- 《我的第一套编程启蒙绘本 123 序列来啦》编程猫教研团队编绘 2019
- 《高等院校计算机任务驱动教改教材 C语言编程思维 第2版》(中国)陈萌,鲍淑娣 2019
- 《我的第一套编程启蒙绘本 咦 什么在 循环》编程猫教研团队编绘 2019
- 《工业机器人离线编程与仿真》张明文,封家诚,王鑫主编 2019
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《剑桥国际英语写作教程 段落写作》(美)吉尔·辛格尔顿(Jill Shingleton)编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019