《数据分发服务 以数据为中心的发布/订阅式通信》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:任昊利,李旺龙,张少扬,王恒佳编著;赵洪利主审
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302381075
  • 页数:275 页
图书介绍:DDS是以数据为中心的发布-订阅通信模型,它不仅仅是一个中间件而且是一种实时SOA。本书系统地介绍了DDS的工作机理及基于DDS构建分布式系统的方法。以RTI公司的DDS指南为应用实例,详细讲解了DDS的框架及主要概念,包括:发布-订阅通信框架、数据类型、主题、发布者、订阅者、接口和QOS策略等,最后给出了如何构建应用程序的方法。

第1章 概述 1

1.1 体系集成需求 1

1.1.1 系统集成的问题 2

1.1.2 耦合性问题 2

1.1.3 复杂数据流问题 3

1.2 什么是数据分发服务 4

1.3 什么是中间件 5

1.4 网络通信模型 5

1.5 什么是“以数据为中心” 7

1.6 DDS对开发者有什么帮助 8

第2章 DDS架构 11

2.1 设计理念 12

2.2 可扩展的传输框架 12

2.2.1 以数据为中心的发布/订阅 14

2.2.2 数据本地重构层 15

2.3 DDS的发现 15

2.4 线程处理 17

2.5 配置 17

2.6 DCPS通信 17

2.6.1 DCPS通信概述 17

2.6.2 域和域参与者 21

2.6.3 数据写入者和发布者 23

2.6.4 数据读取者和订阅者 23

2.6.5 主题、实例与关键字 24

2.6.6 服务质量(QoS)策略控制通信行为 27

2.6.7 监听器 28

2.6.8 条件 28

第3章 数据类型和数据样本 29

3.1 数据类型概述 30

3.1.1 序列 31

3.1.2 字符串和宽字符串 31

3.1.3 类型代码 31

3.2 内置数据类型 32

3.2.1 注册内置类型 32

3.2.2 为内置类型创建主题 33

3.2.3 字符串内置类型 34

3.2.4 关键字字符串内置类型 36

3.2.5 管理内置数据类型的内存 39

3.2.6 内置数据类型的类型代码 41

3.3 使用IDL创建用户数据类型 42

3.3.1 可变长度类型 43

3.3.2 值类型 44

3.4 与用户数据类型动态互动 45

3.4.1 类型代码概述 45

3.4.2 定义新类型 46

3.5 使用数据样本 46

3.5.1 具体类型的对象 47

3.5.2 动态定义数据类型的对象 47

第4章 服务质量(QoS)策略 49

4.1 QoS策略概述 49

4.1.1 默认QoS策略 49

4.1.2 DEADLINE(截止期限(T,DR,DW)) 54

4.1.3 DESTINATION_ORDER(目标顺序(T,DR)) 54

4.1.4 DURABILITY(持久性(T,DR,DW)) 55

4.1.5 ENTITY_FACTORY(实体工厂(DP,Pub,Sub)) 56

4.1.6 GROUP_DATA(组数据(Pub,Sub)) 57

4.1.7 HISTORY(历史(T,DW,DR)) 58

4.1.8 LATENCY_BUDGET(时延预算(T,DR,DW)) 59

4.1.9 LIFESPAN(寿命(T,DW)) 61

4.1.10 LIVELINESS(活跃度(T,DW,DR)) 62

4.1.11 OWNERSHIP、OWNERSHIP STRENGTH(所有权(T)、所有权强度(DW)) 63

4.1.12 PARTITION(分割(Pub,Sub)) 64

4.1.13 PRESENTATION(呈现(Pub,Sub)) 65

4.1.14 READER_DATA_LIFECYCLE(读取者数据生命周期(DR)) 66

4.1.15 RELIABILITY(可靠性(T,DW,DR)) 67

4.1.16 RESOURCE_LIMITS(资源限制(T,DW,DR)) 68

4.1.17 TIME_BASED_FILTER(基于时间的过滤(DR)) 69

4.1.18 TOPIC_DATA(主题数据(T)) 69

4.1.19 TRANSPORT_PRIO)RITY(传输优先级(T,DW)) 70

4.1.20 USER_DATA(用户数据(T,DP,DR,DW)) 71

4.1.21 WRITER_DATA_LIFECYCLE(写入者数据生命周期(DW)) 72

4.1.22 DURABILITY_SERVICE(持久性服务(DW)) 72

4.1.23 OWNERSHIP_STRENGTH(所有权强度(DW)) 73

4.2 策略示例 73

第5章 实体 75

5.1 所有实体的一般操作 75

5.1.1 创建和删除实体 76

5.1.2 启用实体 76

5.1.3 获取实体的实例句柄 77

5.1.4 获取状态和状态改变 77

5.1.5 获取和设置监听器 78

5.1.6 获取状态条件 78

5.1.7 获取和设置服务质量策略 78

5.2 实体的服务质量策略 79

5.2.1 QoS请求vs.提供兼容性——RxO属性 79

5.2.2 C语言的特殊服务质量策略处理 80

5.3 通信状态 81

5.4 监听器实体 83

5.4.1 监听器的类型 83

5.4.2 创建和删除监听器 84

第6章 主题 86

6.1 主题概述 86

6.1.1 创建主题 86

6.1.2 删除主题 89

6.1.3 设置主题的服务质量策略 89

6.2 内容过滤主题 92

6.2.1 内容过滤主题概述 92

6.2.2 过滤器适用的地方——发布与订阅方 93

6.2.3 创建内容过滤主题 93

6.2.4 删除内容过滤主题 95

6.2.5 使用内容过滤主题 95

第7章 发送数据 96

7.1 发送数据的步骤 96

7.2 发布者 97

7.2.1 显式与隐式地创建发布者 97

7.2.2 创建发布者 100

7.2.3 删除发布者 101

7.2.4 设置发布者的服务质量策略 101

7.2.5 创建发布者监听器 107

7.2.6 寻找一个发布者的相关实体 108

7.2.7 等待应答 109

7.2.8 发布者状态 109

7.2.9 暂停和恢复发布 109

7.3 数据写入者 109

7.3.1 创建数据写入者 111

7.3.2 获取所有数据写入者 113

7.3.3 删除数据写入者 113

7.3.4 创建数据写入者监听器 113

7.3.5 检查数据写入者的状态 114

7.3.6 数据写入者的状态 115

7.3.7 使用一个类型特定数据写入者(FooDataWriter) 121

7.3.8 写入数据 122

7.3.9 刷新批量数据样本 124

7.3.10 写入相关数据样本组 124

7.3.11 等待应答 125

7.3.12 管理数据实例(使用关键字控数据类型) 125

7.3.13 设置数据写入者服务质量策略 128

7.3.14 实体间的导航关系 135

7.3.15 断言活跃度 136

第8章 接收数据 137

8.1 接收数据的步骤 137

8.1.1 接收数据的准备 137

8.1.2 使用一种机制接收数据 138

8.2 订阅者 139

8.2.1 显式与隐式地创建订阅者 141

8.2.2 创建订阅者 142

8.2.3 删除订阅者 143

8.2.4 设置订阅者服务质量策略 144

8.2.5 开始和终止组顺序的访问 149

8.2.6 设置订阅者监听器 149

8.2.7 用特定样本获取数据读取者 151

8.2.8 寻找一个订阅者的相关实体 152

8.2.9 订阅者的状态 152

8.3 数据读取者 153

8.3.1 创建数据读取者 155

8.3.2 获取所有数据读取者 157

8.3.3 删除数据读取者 157

8.3.4 建立数据读取者监听器 157

8.3.5 检查数据读取者状态和状态条件 158

8.3.6 等待历史数据 160

8.3.7 数据读取者的状态 160

8.3.8 设置数据读取者服务质量策略 168

8.3.9 实体间的导航关系 172

8.4 使用数据读取者访问数据(读取或获取) 173

8.4.1 使用类型指定数据读取者(FooDataReader) 173

8.4.2 借出和返回数据以及样本信息序列 174

8.4.3 用读取或提取访问数据样本 175

第9章 使用域 178

9.1 域和域参与者的基本原理 178

9.2 域参与者工厂 180

9.2.1 设置域参与者工厂QoS策略 181

9.2.2 获取和设置域参与者的默认QoS策略 182

9.2.3 释放域参与者工厂所用资源 183

9.2.4 查找域参与者 183

9.2.5 从QoS策略配置文件获取QoS策略值 183

9.3 域参与者 184

9.3.1 创建域参与者 187

9.3.2 删除域参与者 189

9.3.3 删除包括的实体 189

9.3.4 选择域ID和创建多个域 189

9.3.5 建立域参与者监听器 190

9.3.6 设置域参与者QoS策略 192

9.3.7 查找主题描述 197

9.3.8 寻找主题 197

9.3.9 获取隐式发布者或订阅者 198

9.3.10 断言活跃度 199

第10章 条件和监听器 200

10.1 条件和监听器概述 200

10.2 通信状态类型 200

10.2.1 主题状态类型 200

10.2.2 订阅者状态类型 201

10.2.3 数据读取者状态类型 201

10.2.4 数据写入者状态类型 203

10.3 定义监听器 205

10.3.1 主题监听器 206

10.3.2 数据写入者监听器 206

10.3.3 发布者监听器 207

10.3.4 数据读取者监听器 207

10.3.5 订阅者监听器 207

10.3.6 域参与者监听器 207

10.4 定义条件 208

10.4.1 状态条件 208

10.4.2 附加的条件类型 209

第11章 配置OpenDDS 210

11.1 配置方式 210

11.2 通用配置选项 211

11.3 发现配置 213

11.3.1 域配置 213

11.3.2 为DCPSInfoRepo配置应用程序 215

11.3.3 为DDS-RTPS发现配置 219

11.4 传输配置 221

11.4.1 传输配置概述 222

11.4.2 配置文件示例 222

11.4.3 传输注册示例 225

11.4.4 传输配置选项 225

11.4.5 传输实例选项 226

11.5 记录 232

11.5.1 DCPS层记录 232

11.5.2 传输层记录 233

第12章 开始使用 234

12.1 规定遵从 234

12.1.1 DDS规定遵从 234

12.1.2 DDS RTPS规定遵从 234

12.2 使用DCPS 235

12.2.1 定义数据类型 235

12.2.2 处理IDL 236

12.2.3 一个简单的消息发布者 238

12.2.4 建立订阅者 242

12.2.5 数据读取者监听器实行 244

12.2.6 清理OpenDDS客户端 246

12.2.7 运行示例 247

12.2.8 用RTPS运行示例 248

12.3 数据处理最佳化 250

12.3.1 在发布者中注册和使用实例 250

12.3.2 读取多个样本 250

12.3.3 零复制读取 251

12.4 构建一个应用程序 252

12.4.1 搭建开发环境 252

12.4.2 构建应用程序 253

12.4.3 数据类型定义 254

12.4.4 建立发布应用程序 256

12.4.5 建立订阅应用程序 263

12.4.6 运行应用程序 269

参考文献 275