Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Ada/C/++;分布式应用程序_Sockets_Com_Ada_Corba_Dss - Fatal编程技术网

Sockets Ada/C/++;分布式应用程序

Sockets Ada/C/++;分布式应用程序,sockets,com,ada,corba,dss,Sockets,Com,Ada,Corba,Dss,我试图评估一些实现Ada模块与一些C++/OpenGL模块之间通信过程的技术。有一个(WindowsXP)艾达应用程序,它使用COM与C++应用程序通信,但我打算将COM切换到一种新技术。提出了一些建议,如直接套接字、DSA、Polyorb、Corba和DSS/Opensplice DSA似乎只是Ada实现的(不确定) 据英国《每日电讯报》报道,Polyorb的最后一次实施日期为2006年 有人认为Corba不够简单,不足以证明其实现简单应用程序的复杂性 DSS/Opensplice似乎只是C

我试图评估一些实现Ada模块与一些C++/OpenGL模块之间通信过程的技术。有一个(WindowsXP)艾达应用程序,它使用COM与C++应用程序通信,但我打算将COM切换到一种新技术。提出了一些建议,如直接套接字、DSA、Polyorb、Corba和DSS/Opensplice

  • DSA似乎只是Ada实现的(不确定)
  • 据英国《每日电讯报》报道,Polyorb的最后一次实施日期为2006年
  • 有人认为Corba不够简单,不足以证明其实现简单应用程序的复杂性
  • DSS/Opensplice似乎只是C/C++实现的,所以应该进行Ada绑定。它看起来也不是很容易实现
就我个人而言,我喜欢COM,但由于迁移的原因,我宁愿选择sockets选项,因为它很简单,接口架构可以很容易地实现

那么,你认为呢?请您对这些技术进行评论,或者提出其他更多建议


非常感谢。

您选择的一个重要因素是您正在重新设计的系统的规模和复杂性。它是一个广泛分布的系统,有很多复杂的消息吗?它是一个相对较小的系统,有一些普通的消息交换吗

对于小型系统,我过去只使用自己的基于套接字的通信模块。不过,现在我更倾向于(无经纪人)或(基于文本)。还有一些Ada支持这些,并且(两者都支持)

虽然这些处理分发机制,但您仍然需要将消息序列化为可传输形式


CORBA/PolyORB和DDS解决方案相当重要,但都是完整的解决方案。如果您不害怕IDL和管理代理,那么它们可以很好地用于大规模分布式系统。是的,可能需要构建一些Ada绑定,但是如果您可以获得要绑定的C头或C API,如果您只关注绑定所需的函数和数据结构,通常情况下也不会太糟糕。与其创建一个全面的绑定,不如对其内部内容不关心的结构和参数采用不透明和空洞的指针(<,)。<清单> P>一个选项,就是使用艾达的,并编写C/C++包装器将C++程序与它连接。 我不知道这是满足您需求的最佳选择,但如果您的Ada编译器支持附录E,它应该在列表中

我们打算将COM切换到一种新的(受支持的)技术,因为微软不太支持COM

告诉你COM不再受支持的人是完全不知道的

虽然COM在过去几十年中经历了许多名称变化(OLE、COM、OLE自动化、DCOM、COM+、ActiveX、WinRT)和扩展,但它是MS平台最重要的技术:过去、现在和未来。Win32 API的大部分都是用COM编写的,没有编写的部分将在Win8中,因为。

还可以看看AMQP(对于服务器),似乎有Ada库可供使用

如果您可以找到Ada的绑定,那么它也可能是一个轻量级的选项。也许您甚至可以编写自己的绑定,在套接字上滚动您自己的东西应该不会更困难


如果你要走套接字路径,我就不认为是“超级套接字”。

自从这个帖子,AdaRoor发布了定期更新:

在你陷入陷阱是“简单”的陷阱之前,考虑你必须在你的裸露套接字层之上建立的东西来支持性能,灵活可扩展的IPC机制。有关更多详细信息,请参阅我的另一个问题的答案:Polyorb似乎由AdaCore积极维护,并有最近的更新。您可以在CORBA上浏览存储库,这应该可以做到,polyorb是一个选项,您还可以为现有oRB开发语言绑定,例如,我们已经为TAO创建了一个Ruby绑定,为TAO创建了一个新的C++11绑定,为JacORB创建了一个JRuby绑定。也请查收。如果您想使用DDS,请考虑为OpenDDS创建艾达绑定(参见),我看了一下zeromq Ada,听起来很有意思。代码已打开,但如果需要,可以提供支持。谢谢你,Marc,我只是想知道为什么我们框架中的几个COM应用程序在安装SP3 Win XP后停止工作。如果我们不迁移到一个新的基于COM的.NET,我们应用程序的几个功能将受到损害。对于安全/关键软件来说,不可接受的是,通信协议总是在操作系统升级时更改(在Windows中频繁),然后我们必须尝试更稳定的方法。另外,Ada有非常好的COM绑定GNATCOM,它不再处于开发阶段。我很欣赏你的意见,也同意COM有成功者,但是你对这个问题有什么建议吗?Thanks@Rego:这些不是COM的继承者,它们是COM。或者使用COM。任何遵循COM规则的代码仍然有效,如果某些应用停止在XP SP3上工作,我只能认为(1)它们使用了某些特定的组件,这些组件是出于安全原因而被删除的,或者(2)它们依赖于未记录的行为,而不是遵循记录的规则。@Rego:,产品不再处于开发阶段有多种可能的原因。它可以被抛弃,也可以是稳定的。听起来GNATCOM是稳定的。我会检查附件E。我想我的编译器支持它。谢谢TED。事实上,当我上次检查时(承认是很久以前),很少有Ada编译器支持这个特定的附件。然而,如果你碰巧有一个这样的绑定,你可能正在做生意。AMQP绑定“adaqpid”非常简单和脆弱,IIRC,我最终放弃了扩展它的功能。另外,它是一个半途而废的归档文件,还包括由编辑器(i)制作的最新备份文件版本