我想知道OPC (开放平台通信)和DDS (数据分发服务)之间的区别。
我对这两个框架的理解是:机器上的通信中间件,用于简化复杂的网络编程。它们都用于通过消息传递在物理上分离的机器上进行程序通信。它们采用客户机-服务器模型作为TCP/IP套接字进行通信,但它们之间可以采用多路、二路、多路数据交换。此外,DDS还常用于飞机、军用舰船等关键系统中。
如果有任何误解,或者你知道他们之间的一些区别,请让我知道。
发布于 2016-03-31 01:01:51
(在Basil的评论之后编辑,在初始帖子之前:)
我希望你指的是OPC-UA,因为OPC已经被统一架构实现所取代。OPC和Windows COM/DCOM几乎没有什么不同,UA完全是SOA的翻版。
DDS互操作性规范要求使用UDP/IP和组播进行匿名发现,而不是TCP/IP。可以使用TCP,但还没有规范,允许不同的供应商随心所欲地实现它。假设一个供应商的TCP/IP传输不能与另一个供应商的TCP/IP传输一起工作(也适用于共享内存传输等,它们不能互操作)。
OPC-UA在类HTTP协议上使用restful通信。TCP不是确定性的,因此您不能保证实时了解正在发生的事情。
默认情况下,OPC-UA是客户机/服务器(但如果您希望在嵌入式系统上实现服务器的开销,则可以将其设置为点对点)。DDS是匿名的点对点(但将其设置为客户端-服务器非常简单,只需为给定主题实现一个订阅者)。
OPC-UA是针对工业控制(SCADA)的。DDS适用于几乎任何机器到机器的连接,其中机器被定义为一些硬件,运行某种类型的代码,可以访问UDP/IP堆栈和足够的内存来支持数据volume/variety/velocity/variability/vendor/v...设备的要求。
两者完全互不连接,并且与平台无关(硬件、操作系统、语言等),但实现方式不同。DDS将数据提升到系统的完全合格的对等体:发布者发布“数据”。订阅者订阅"data“。它是-而不是-“发布者与订阅者对话”。
OPC-UA使用内部协议(opc-tpc://或https://)和RESTful。很难搞砸。
OPC (基础)和OMG (开放标准组织)都测试实现之间的互操作性。
QoS: DDS中的QoS本身就是一个字段。你会印象深刻的。你会感到惊讶的。当同一主题的两个对等体在同一子网中使用完全相同的类型定义,仍然不能相互交谈时,您将感到震惊和困惑,并沮丧地痛哭。然后,您会说,‘oh.duh’,在QoS文件中更改一个设置,一切都会变得轻松愉快。
因为OPC-UA是针对特定用例的,所以除了该特定用例所需的以外,不需要任何QoS。DDS的能力更强,对QoS的感知也更强,因为它并不局限于单个用例。
发布于 2016-03-31 00:14:52
DDS通常使用但不限于用于发布/订阅的UDP多播,并且OPC UA可以使用用于点对点交互的TCP或用于发布/订阅的UDP多播。是的,DDS got是从军事应用开始的,而OPC UA起源于过程控制和制造。
OPC Foundation的DDS OPC UA第14部分描述了如何在DDS上运行OPC UA服务。OMG的DDS/OPC UA规范描述了如何通过DDS公开OPC UA服务器。
两者之间的区别在于,OPC UA在地址空间中公开数据,而DDS使用主题公开数据。地址空间描述了类型和实例以及它们之间的关系。主题更多地面向文档,但也包括QoS。考虑这一点的一种方法是,DDS有效地提供了select和from子句来访问数据,而OPC UA提供了select、from和where子句。准确地说,DDS也有一个where子句,但它不能扩展到大型系统。
https://stackoverflow.com/questions/36301904
复制相似问题