ipc - OPC 和 DDS 之间的区别?

标签 ipc communication opc data-distribution-service

我想知道OPC(开放平台通信)和DDS(数据分发服务)之间的区别。

我对这两个框架的理解是:机器上的通信中间件,用于简化复杂的网络编程。两者都用于通过消息传递在物理上独立的机器上进行程序通信。它们采用客户端-服务器模型作为TCP/IP套接字进行通信,但可以以多2多方式交换数据。此外,DDS还经常用于飞机、军舰等关键系统。

如果有任何误解,或者您知道它们之间的差异,请告诉我。

最佳答案

(在 Basil 评论之后、在最初发布之前编辑:) )

我认为您指的是 OPC-UA,因为 OPC 已被统一架构实现所取代。有点交叉,OPC 只不过是 Windows COM/DCOM,UA 是对 SOA 的彻底改造。

DDS 互操作性规范需要 UDP/IP 和多播来进行匿名发现,而不是 TCP/IP。 TCP 可以使用,但还没有规范,允许不同的供应商随心所欲地实现它。假设一个供应商的 TCP/IP 传输无法与另一供应商的 TCP/IP 传输兼容(也适用于共享内存传输等。它们不可互操作)。

OPC-UA 通过类似 HTTP 的协议(protocol)使用静态通信。 TCP 不是确定性的,因此无法保证实时了解正在发生的事情。 UDP 是尽力而为(RTPS2,DDS 使用的协议(protocol)包括通过 UDP 提供可靠流量的方法,即在更高的协议(protocol)级别提供可靠性),但至少您的应用程序知道数据已/未及时到达,并且可以做出相应的 react 。

OPC-UA 默认情况下是客户端/服务器(但如果您想要嵌入式系统上服务器实现的开销,可以将其设置为点对点)。 DDS 是匿名的点对点(但将其设置为客户端-服务器非常简单,只需为给定主题实现一个订阅者即可)。

OPC-UA面向工业控制(SCADA)。 DDS 适用于几乎任何机器对机器的连接,其中“机器”被定义为运行某种代码的某些硬件,可以访问 UDP/IP 堆栈和足够的 RAM 来支持数据量/设备的多样性/速度/可变性/供应商/v...要求。

两者完全彼此分离,并且是平台独立的(硬件、操作系统、语言等),但实现方式不同。 DDS 将数据提升到系统的完全合格的对等点:发布者发布“数据”。订阅者订阅“数据”。它不是“发布者与订阅者对话”。

OPC-UA 使用内部协议(protocol)(opc-tpc://或 https://)和 RESTful。很难搞砸。

OPC(基金会)和 OMG(开放标准机构)都测试实现之间的互操作性。

QoS:DDS 中的 QoS 本身就是一个领域。你一定会印象深刻。你会感到惊讶的。当两个对等点在同一个主题上,在同一个子网上使用完全相同的类型定义,仍然无法相互交谈时,您会感到震惊、困惑和沮丧地哭泣。然后你会说,‘哦。呃,'更改 QoS 文件中的一项设置,一切都会再次变得甜蜜和轻松。

由于 OPC-UA 针对特定用例,因此除了该特定用例所需的之外,不需要任何 QoS。 DDS 的能力更强/对 QoS 的感知能力更强,因为它不限于单一用例。

关于ipc - OPC 和 DDS 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301904/

相关文章:

c# - Excel和C#应用程序之间的进程间通信?

c# - 如何与Windows服务通信?

c++ - 关于Boost共享内存的问题

tcp - 通过互联网进行通信

python - 了解 python 中的免费 OPC/UA 代码

.net - ssh 坚持从控制台读取密码而不是 stdin

linux - 守护进程/客户端设置中两个 Perl 进程之间的通信。这叫什么?

java - 如何从 Runtime.getRuntime.exec() 启动 Haskell 进程?并进行互动交流?

mqtt - OPC-UA 的替代方案

任何人都可以帮助我解决未注册的 C# 类(HRESULT : 0x80040154(REGDB_E_CLASSNOTREG)) 的异常)