1. 数据分发服务 (DDS)
数据分发服务 (DDS)是一种以 数据为中心的通信协议,用于分布式软件应用程序通信。它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口 (API) 和通信语义。
由于它是一个以数据为中心的发布订阅 (DCPS) 模型,因此在其实现中定义了三个关键应用实体:
发布实体,定义信息生成对象及其属性;
订阅实体,它定义了信息消费对象及其属性;
配置实体,定义作为主题传输的信息类型,并使用其服务质量 (QoS) 属性创建发布者和订阅者,确保上述实体的正确性能。
DDS 使用QoS来定义 DDS 实体的行为特征。QoS 由单独的 QoS 策略(源自 QoSPolicy 的类型的对象)组成。这些在Policy中描述。
2. eProsima Fast DDS
eProsima Fast DDS是 DDS(数据分发服务)规范的 C++ 实现,该规范由对象管理组 (OMG)定义。eProsimaFast DDS库提供应用程序编程接口 (API) 和通信协议,用于部署以数据为中心的发布者 - 订阅者 (DCPS) 模型,目的是在实时系统之间建立高效可靠的信息分发。eProsima 快速 DDS在资源处理方面是可预测的、可扩展的、灵活的和高效的。为了满足这些要求,它使用类型化接口并依赖于多对多分布式网络范式,该范式巧妙地允许通信的发布方和订阅方分离。
eProsima Fast DDS包括:
DDS API实现。Fast DDS-Gen,一种用于将类型化接口与中间件实现桥接的生成工具。底层RTPS有线协议实现。
支持协议:
Data Distribution Service (DDS) 1.4版规范定义DDSI-RTPS™ DDS 互操作性有线协议2.5,该协议通过 TCP/UDP/IP 等传输提供发布者-订阅者通信,并保证不同 DDS 实现之间的兼容性。
3. 环境搭建
3.1 windows安装
3.1.1 二进制安装
支持WINDOW二进制安装,支持源码编译安装,这种方法最简单,也最方便。
/index.php/downloads-all
3.1.2 从源码安装
3.1.2.1 安装choco
从powershell中输入以下
Set-ExecutionPolicy Bypass -Scope Process -Force; [.ServicePointManager]::SecurityProtocol = [.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object .WebClient).DownloadString('/install.ps1'))
3.1.2.2 CMake、pip3、wget 和 git
这些软件包提供了从命令行安装eProsima Fast DDS及其依赖项所需的工具。按照各自网站中详细说明的说明下载并安装CMake、pip3、wget和git。安装后,将可执行文件的路径添加到PATH
编辑系统环境变量控制面板中。
wget使用
3.1.2.3 依赖项
在 Windows 环境中从源安装时, eProsima Fast RTPS具有以下依赖项:
Asio 和 TinyXML2 库OpenSSL
3.1.2.4 Libp11 和 SoftHSM 库
Libp11 为 OpenSSL 提供 PKCS#11 支持。这是一个可选依赖项,仅当eprosima Fast DDS与安全性和 PKCS#11 URI 一起使用时才需要。
从此 存储库下载适用于 Windows 的最新libp11版本 并按照安装说明进行操作
SoftHSM 是 HSM(硬件安全模块)的软件实现。如果激活了eProsimaFast DDS测试并在系统上安装了 libp11,则还需要 SoftHSM 来运行 PKCS#11 功能的测试。
从此 存储库下载SoftHSM for Windows 安装程序。执行安装程序并按照安装说明进行操作。
OpenSSL 通过其引擎功能访问 HSM 和其他硬件设备。为了设置新引擎,必须更新 OpenSSL 配置文件,指定 libp11和硬件模块(此处为 SoftHSM)动态库位置。
Windows 上的 OpenSSL 通过OPENSSL_CONF 环境变量引用其默认配置文件。默认情况下,OpenSSL 安装两个相同的默认配置文件:
C:\Program Files\OpenSSL-Win64\bin\cnf\f模仿 Linux 发行版之一。C:\Program Files\OpenSSL-Win64\bin\openssl.cfg为向后兼容而保留。
默认情况下,它们都没有加载。为了指示 OpenSSL 加载其中一个或任何其他,我们必须设置变量:
cmd> set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\bin\cnf\fpowershell> $Env:OPENSSL_CONF="C:\Program Files\OpenSSL-Win64\bin\cnf\f"
一旦我们提示 OpenSSL 使用配置文件,我们必须修改它以按照 OpenSSL 指南设置新的 PKCS#11 引擎 ,用正确的路径替换二进制文件路径。例如,在配置文件的任何部分之前我们引入:
openssl_conf = openssl_init
在文件的末尾,我们包含了引擎专用部分。注意使用 POSIX 路径分隔符而不是 windows 之一。
[openssl_init]engines = engine_section[engine_section]pkcs11 = pkcs11_section[pkcs11_section]engine_id = pkcs11dynamic_path = C:/Program Files/libp11/src/pkcs11.dllMODULE_PATH = C:/Program Files (x86)/SoftHSM2/lib/softhsm2-x64.dllinit = 0
可以使用 OpenSSL 命令行工具验证正确的设置:
openssl engine pkcs11 -t
3.1.2.5 cmake编译
从github下载源码:/eProsima/Fast-DDS.git
三方库依赖下载,一般放在Fast-DDS\thirdparty目录下,没有的自行打源码下载:
下面是使用cmake的脚本,我用的是VS
set DDS_SDK=F:/fastDDS/Fast-DDSset DDS_ROOT=%DDS_SDK%\includemkdir buildcd /d buildcmake.exe -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=%DDS_SDK%/install -DCMAKE_PREFIX_PATH=%DDS_SDK%\cmake -G "Visual Studio 16 " -A x64 ..
编译过程中少什么三方库,自行下载编译。
如果觉得《数据分发服务 (DDS)及Fast DDS环境搭建》对你有帮助,请点赞、收藏,并留下你的观点哦!