COM或CORBA是否带来了编译器或标准库的兼容性?

COM或CORBA是否带来了编译器或标准库的兼容性?,com,corba,Com,Corba,这个问题跟在下一个问题之后: 我想知道,如果用C++链接来实现C++的DLL或共享库的接口功能,那么编译器和标准库的兼容性就可以了。 外部“C”someAPI() 投票最多的答案是说我错了。答案建议将其开源。从来没有提到过COM或CORBA。使其开源并不总是可能的 但最近我正在读有关Windows COM的书。我想COM可能带来了我想要的兼容性。还有一件事,科尔巴 所以我想知道COM和CORBA是否真的提高了编译器和标准库的兼容性 我认为网络库ACE使用CORBA。这是我唯一知道的关于CORB

这个问题跟在下一个问题之后:

我想知道,如果用C++链接来实现C++的DLL或共享库的接口功能,那么编译器和标准库的兼容性就可以了。 外部“C”someAPI()

投票最多的答案是说我错了。答案建议将其开源。从来没有提到过COM或CORBA。使其开源并不总是可能的

但最近我正在读有关Windows COM的书。我想COM可能带来了我想要的兼容性。还有一件事,科尔巴

所以我想知道COM和CORBA是否真的提高了编译器和标准库的兼容性

我认为网络库ACE使用CORBA。这是我唯一知道的关于CORBA的事情。 CORBA现在不流行吗? 那COM呢?ActiveX可能正在消失,但WDF(Windows驱动程序基础)依赖于COM


多谢各位

是的,COM的创建是为了克服源代码(以及.obj、静态库等)的重用问题,不管源代码是C/C++还是其他任何东西

COM(v-table布局+IUnknown,忘记注册、OLE、自动化、封送和其他附加功能)的本质非常简单(事实上,很难让它变得更简单)。因为它只依赖于二进制契约,所以您可以使用任何语言(和任何平台,但实际上只有Windows使用它)编写COM客户端和/或服务器代码。因此,您可以用Python Talk编写的32位COM客户端,以C++编写的64位COM服务器为例(这个例子实际上需要一些跨进程封送处理,所以它不是纯轻量级COM)。 COM还远远没有消亡或消失(因为它同样非常简单)。“ActiveX”是一个营销/技术的混合名称,但它基本上是COM,在Windows中被Windows和第三方大量使用

物理网络上的COM(DCOM)确实正在消失(有利于其他技术,如Web、套接字、HTTP、REST或比COM更简单的一般技术),而今天仍然使用的基本上是进程内和进程外COM(进程外在某种程度上是同一台机器上的DCOM)


我知道CORBA曾经是一个强大的COM竞争对手(特别是因为它可以在多个平台上使用,包括Windows),但它似乎正在严重下降,也支持同样更简单的技术(web等)。

是的,COM的创建,除其他原因外,是为了克服源代码(和.obj、静态库等)重用问题,不管源代码是C/C++还是其他任何东西

COM(v-table layout+IUnknown,忘记注册、OLE、自动化、封送和其他附加功能)的本质非常简单(事实上,很难让它变得更简单)。因为它只依赖于二进制契约,所以您可以使用任何语言编写COM客户机和/或服务器代码(和任何平台,但实际上,只有Windows使用它)。因此,您可以在Python Talk中编写一个32位COM客户端,以C++编写的64位COM服务器(例如,这个示例实际上需要一些跨进程封送处理,因此它不是纯轻量级COM)。 COM还远远没有消亡或消失(因为它还是很简单的)。“ActiveX”是一个营销/技术的混合名称,但它基本上是COM,在Windows中被Windows和第三方大量使用

物理网络上的COM(DCOM)确实正在消失(有利于其他技术,如Web、套接字、HTTP、REST或比COM更简单的一般技术),而今天仍然使用的基本上是进程内和进程外COM(进程外在某种程度上是同一台机器上的DCOM)


我知道CORBA曾经是一个强大的COM竞争对手(特别是因为它可以在多个平台上使用,包括Windows),但它似乎正在严重下降,也支持同样更简单的技术(web等)。

我不熟悉CORBA.COM通过(除其他外)确保二进制兼容性严格限制允许的方法参数类型和返回值为POD类型的子集。特别是,没有标准的库类(或者用户定义的类)可以在COM接口中提到,使标准库兼容性问题变得毫无意义。我不熟悉CORBA。COM通过(除其他外)严格限制允许的方法参数类型和返回值到POD类型的子集来确保二进制兼容性。特别是,没有标准库类(或者,就此而言,用户定义的类)可以在COM接口中提及,从而使标准库兼容性问题变得毫无意义。