我是 DDS 的新手......到目前为止,我在 OpenDDS 和 CycloneDDS 方面的经验很少
是否可以在空闲文件中定义一个类并具有成员变量和成员方法?还是 DDS 标准仅支持结构和原始数据类型?
我是 DDS 的新手......到目前为止,我在 OpenDDS 和 CycloneDDS 方面的经验很少
是否可以在空闲文件中定义一个类并具有成员变量和成员方法?还是 DDS 标准仅支持结构和原始数据类型?
IDL 语言在OMG IDL 规范中定义。它由许多构建块组成,其中包括Core Data Types,例如您提到的结构和原始数据类型,以及Interfaces,其中包括您询问的方法。
但是,DDS 仅使用这些构建块的一个子集。对于当前版本 4.2,第9.3 节 DDS Profiles定义了其中哪些与 DDS 的三个不同支持级别相关:Plain DDS、Extensible DDS和DDS over RPC。
您会看到后者确实包括Building Block Interfaces - Basic,正如您对 RPC 所期望的那样。但是,并非所有 DDS 实现都支持 RPC。普通 DDS和可扩展 DDS得到更普遍的支持,并且接口不是该功能的一部分。
既然您在另一个问题中问过这个问题:请注意,在DDS over RPC中捕获的接口功能不是为了分发对象及其方法,而是为了远程调用对象上的方法——正如远程过程调用的名称所暗示的那样。
您的问题的另一个答案是,您可能正在询问后续问题,就好像它是第一个问题一样。构建分布式系统有很多不同的方法,鉴于您的问题,三个示例似乎是合适的:
您的问题表明您正在寻找用于进行分布式对象计算的中间件。如果这确实是您正在寻找的,DDS 是一个非常次优的选择。是的,RPC 可以构建在它之上(RPC-over-DDS 只是让它更容易一些),并且在一个主要围绕分布状态构建的系统中,这样做是有意义的。
如果您可以使用对象的方法序列化对象,那么您当然可以使用 DDS 在网络中分发它们(您可以这样做很有趣)。但是,这更多的是您使用的编程语言的功能,而不是中间件的功能,IDL 不会帮助您。