Reg*_*ego 6 sockets com corba ada dss
我正在尝试评估一些技术,以实现一些Ada模块与一些C++/OpenGL模块之间的通信过程.有一个(Windows XP)Ada应用程序使用COM与C++应用程序通信,但我打算将COM切换到新技术.提出了一些建议,例如直接套接字,DSA,Polyorb,Corba和DSS/Opensplice.
我个人喜欢COM,但由于迁移,我宁愿采用套接字选项,因为它简单,接口架构可以非常容易地实现.
那你觉得呢?您能否对这些技术发表评论,甚至建议其他更多?
非常感谢.
您选择的一个重要因素是您正在重新设计的系统的规模和复杂性。它是一个具有大量复杂消息的广泛分布式系统吗?它是一个相对较小的系统,只有少量普通的消息交换吗?
对于小型系统,我过去只是使用自己的基于套接字的通信模块。不过,现在我更倾向于ZeroMQ(无代理)或STOMP(基于文本)。并且有一些 Ada 支持,zeromq-Ada和TOMI_4_Ada(两者都支持)。
虽然它们处理分发机制,但您仍然需要将消息序列化为可传输形式。
CORBA/PolyORB 和 DDS 解决方案相当重量级,但却是完整的解决方案。如果您不害怕 IDL 和管理代理,它们可以在大型分布式系统中表现出色。是的,可能需要构建一些 Ada 绑定,但如果您可以获得 C 标头或 C API 来绑定,那么如果您专注于绑定所需的函数和数据结构,通常也不会太糟糕。不要创建全面的绑定,而是对您不关心其内部内容的结构和参数自由使用不透明和空指针( void_ptr、opaque_struct_def_ptr )。