二者都属于分布式对象通信中间件,用于网络上跨进程、跨设备的数据交互。 先一句话总览:
- CORBA:面向对象、请求/应答(客户端主动调用服务),偏通用分布式;实时扩展 RT-CORBA。
- DDS:发布/订阅模型、以数据为中心、原生面向硬实时,适合高可靠实时数据流。
一、CORBA(Common Object Request Broker Architecture)
通用对象请求代理体系结构,OMG 标准。
1. 核心模型:请求-应答(Client/Server)
- Client(客户端)发起调用;
- ORB(对象请求代理)负责定位远端对象、打包消息、网络传输;
- Server(服务端)执行方法,返回结果; 典型模式:同步调用为主。
2. 关键组件
- IDL:接口定义语言,语言无关(C++/Java/Python),定义远程对象有哪些方法;
- ORB:核心总线,负责透明通信、编组/解组;
- 对象引用:用来定位网络中的远程对象;
3. 特点
✅ 优点
- 语言、操作系统完全透明,跨平台;
- 擅长远程函数调用RPC;
- 标准成熟,传统军工、电信大量使用;
❌ 缺点
- 默认非实时,时延不可预测; 虽然有 RT-CORBA(实时CORBA扩展),只是改良,架构根源仍是请求应答;
- 一对一调用模型,不适合大量节点持续数据流;
- 没有原生支持数据过滤、时间戳、生存周期、数据状态管理;
- 单点故障明显,客户端必须知道服务端地址;
典型场景
传统分布式控制系统、电信网管、老一代军工分布式系统。
二、DDS(Data Distribution Service,数据分发服务)
同样 OMG 标准,专为实时分布式系统设计。
1. 核心模型:以数据为中心的发布-订阅(DCPS)
完全区别于 RPC:
- 发布者 Publisher:产生数据(传感器、控制器);
- 订阅者 Subscriber:接收感兴趣的数据; 中间通过 全局数据空间(Global Data Space) 解耦。
发布者不需要知道谁在订阅;订阅者不需要知道谁在发布。
2. 最重要特色:QoS(服务质量策略)
DDS 强大之处在于可以对每一类数据独立配置QoS策略:
- 截止时间(Deadline)
- 可靠性:尽力交付 / 可靠有序传输
- 历史数据保存(历史队列)
- 数据有效期(生存时间)
- 优先级、资源限制、所有权(多个发布者谁有权写数据)
👉 天然支持定时限制、实时调度,完美匹配嵌入式实时数据库、实时控制场景。
3. 两种层级规范
- DCPS:底层核心,数据分发(绝大多数商用DDS实现只实现DCPS)
- DLRL:上层,提供类似数据库视图的数据访问
4. 特点
✅ 优点
- 发布订阅,节点高度解耦;
- 原生面向硬实时,时延可预测;
- 丰富QoS,适配工业控制、自动驾驶、航空航天;
- 支持多点对多点数据流;
- 支持动态节点加入(即插即用);
❌ 缺点
- 不擅长“一次性同步请求-应答”;
- 学习复杂度高于CORBA;
- 轻量级嵌入式移植难度更高;
典型场景
自动驾驶、无人机、舰船控制系统、电力实时监控、机器人集群。
三、CORBA VS DDS 核心对比表
| 对比维度 | CORBA(含RT-CORBA) | DDS |
|---|---|---|
| 通信模型 | 请求/应答 RPC(客户端调用远程对象方法) | 发布/订阅、以数据为中心 DCPS |
| 耦合度 | 紧耦合:客户端必须寻找指定服务对象 | 松耦合:发布者与订阅者互相未知 |
| 数据视角 | 面向操作/方法调用 | 面向数据本身 |
| 实时性 | 标准CORBA无实时保障;RT-CORBA是扩展方案 | 原生设计支持实时、时延有界、定时约束 |
| QoS机制 | 基础,能力弱 | 极其丰富,支持截止时间、可靠性、数据生命周期等 |
| 数据流形态 | 适合零星、按需调用;不适合高频持续数据流 | 适合周期性传感器、控制指令持续传输 |
| 典型关键词 | ORB、IDL、对象请求代理、远程方法调用 | DCPS、发布订阅、全局数据空间、QoS策略、硬实时分布式系统 |
四、
1. CORBA核心思想
CORBA 是OMG制定的分布式对象标准,核心是ORB对象请求代理。使用IDL定义跨语言接口,实现异构平台、不同编程语言之间透明的远程对象调用,采用客户端/服务器请求应答模型。标准CORBA不保证实时性,RT-CORBA通过扩展增加实时支持。
2. DDS核心思想
DDS是OMG面向实时分布式系统的通信标准,采用以数据为中心的发布-订阅模型(DCPS)。系统内所有数据存放在逻辑全局数据空间;发布者推送数据,订阅者订阅感兴趣的数据,收发双方解耦;提供丰富QoS策略,保障通信时延可预测、满足硬实时系统定时限制需求。
3. 简述CORBA与DDS适用场景区别
CORBA基于远程调用,适合异构平台之间按需执行远程操作、事务交互;适合管理类、非强实时业务。 DDS基于发布订阅数据流,适合大量节点周期性传输传感器与控制数据,依靠QoS保障实时性,广泛用于嵌入式硬实时控制系统。
五、
- 自动驾驶多ECU之间周期性交互传感器数据,优先选用? ✅ DDS
- 分布式网管系统,客户端按需查询远端设备配置,优先选用? ✅ CORBA
- 哪个中间件内置大量QoS策略支持截止时间、数据有效期? ✅ DDS
- ORB、IDL是哪个中间件核心概念? ✅ CORBA
延伸联动
实时数据库的定时限制 + DDS通信 是嵌入式实时控制系统标准组合: DDS保证数据在规定时限送达,实时数据库保证数据读写在截止时间完成。 而传统CORBA + 普通嵌入式数据库(SQLite)一般用于非实时业务。
注意:本文归作者所有,未经作者允许,不得转载