Linux世界中最接近Windows COM / DCOM的东西是什么?

时间:2009-07-26 04:48:08

标签: windows linux dcom com

比管道/套接字更高级,更全面吗?

7 个答案:

答案 0 :(得分:11)

对于进程间通信,D-Bus是标准的更高级别机制。 GTK和Qt都具有D-Bus绑定,大多数桌面环境(或至少GNOME和KDE)通过D-Bus公开各种服务,许多桌面应用程序可以通过D-Bus接口进行控制。系统总线对于使用标准系统服务查找有关系统的各种低级信息也很有用。

KDE4(基于Qt4构建)还包括一项名为KParts的技术,它通常与Window的COM进行比较。

答案 1 :(得分:9)

是的,有很多东西,但没有一个像COM / DCOM那样“标准”。至少,在Windows中,COM / DCOM被“Windowsish”使用,其他RPC机制被非“Windowsish”使用。

Linux没有类似的东西,而是需要更高级别RPC协议的东西通常使用他们的语言提供的任何东西,或者最适合应用程序需求的特定库。例如,Java中的RMI,Python的“pyro”模块等,它将提供(某些)功能与DCOM的奇偶校验。

Corba有点重量级,但有些人显然会使用它。

许多应用程序都会使用自己的RPC库。除非你必须这样做,否则不要这样做,这是令人讨厌的。

答案 2 :(得分:4)

D-Bus
  • D-Bus使用逻辑“总线”,连接的应用程序可以在其上进行通信
  • 通过支持RPC和发布 - 订阅机制的简单对象模型进行通信
  • D-Bus包括用于运行时查询对象接口的标准内省机制,连接到总线的应用程序可以查询对象的可用性,调用对象的远程方法,并请求通知它们发出的信号
  • 之前:GNOME BonoboKDE DCOPCORBASun RPC ...现在人们似乎更喜欢D-Bus
UNO
  • 基于接口的组件模型,COM和CORBA
  • 所有UNO接口必须从提供获取,发布和queryInterface方法的接口派生(与COM相当)
  • UNO对象的生命周期由全局引用计数控制。
  • 组件仅通过其接口进行通信 o每个组件都存在于Uno运行时环境(URE)中,组件的性能开销没有在同一个URE中实例化,例如,在C ++中,从组件A到B的调用只是一个虚拟调用
  • UNO接口在IDL中指定
  • 异常用于错误处理。
XPCOM
  • 与Microsoft COM类似
  • XPCOM中的接口以IDL方言XPIDL
  • 定义
  • 缺点是XPCOM在不同的使用上下文之间为编组对象添加了大量代码,这导致基于XPCOM的系统中的代码膨胀

......考虑的另一种选择可能是Java RMI

还有必要查看相关问题:
Is there an equivalent to COM on *nix systems ? If not, what was the *nix approach to re-usability?
Analog of COM programming in Linux/UNIX

答案 3 :(得分:3)

您可以查看Corba,它也适用于Linux和Windows。

答案 4 :(得分:3)

Mono项目跳跃于脑海。主要是因为CLR / .NET是新的COM - 毕竟,COM最初作为独立于语言的二进制兼容对象出售。

我猜DCOM(即带有更长线路的COM)将是.NET远程处理?或者也许是一些带有对象序列化的Web服务。我相信Mono支持两者。

答案 5 :(得分:2)

有Mozilla的XPCOM技术,跨平台组件对象模型。在概念上类似于COM或DCOM。

Here是使用D-bus

的相对较少的程序列表

答案 6 :(得分:0)

DCOM可在Linux上使用。它不是“linux的做事方式”,但是嘿,如果你想“像DCOM,但Linux”,那么只需在Linux上使用DCOM并完成......