10

有什么比管道/套接字更高级、更全面的吗?

4

7 回答 7

12

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

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

于 2009-07-26T04:52:10.220 回答
9

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

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

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

许多应用程序都有自己的 RPC 库。除非万不得已,否则不要这样做,这很讨厌。

于 2009-07-26T17:59:41.120 回答
5
D-总线
  • 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 中的接口是用一种称为 XPIDL 的 IDL 方言定义的
  • 缺点是 XPCOM 为在不同使用上下文之间编组对象添加了大量代码,这导致基于 XPCOM 的系统中的代码膨胀

...另一个需要考虑的替代方案可能是Java RMI

还值得查看相关问题:
*nix 系统上是否有与 COM 等效的问题?如果不是,那么 *nix 的可重用性方法是什么?
Linux/UNIX 中的 COM 编程模拟

于 2013-03-08T12:16:11.943 回答
4

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

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

于 2009-07-26T05:59:56.730 回答
3

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

于 2009-07-26T05:18:16.253 回答
2

有Mozilla的XPCOM技术,Cross Platform Component Object Model。在概念上类似于 COM 或 DCOM。

是使用 D-bus 的相对少数程序的列表

于 2009-07-26T04:55:41.790 回答
1

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

于 2012-01-29T22:27:57.423 回答