代码之家  ›  专栏  ›  技术社区  ›  fakeleft

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

  •  9
  • fakeleft  · 技术社区  · 15 年前

    有比管道/插座更高级、更全面的吗?

    7 回复  |  直到 11 年前
        1
  •  9
  •   MarkR    15 年前

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

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

    CORBA有点重,但有些人显然使用它。

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

        2
  •  11
  •   Kitsune SpiderShlong    15 年前

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

    kde4(建立在qt4之上)还包括一种称为kparts的技术,通常与window的com进行比较。

        3
  •  4
  •   Community Romance    7 年前
    D-Bus
    • D总线使用逻辑“总线”,连接的应用程序可以通过它进行通信。
    • 通过支持RPC和发布订阅机制的简单对象模型进行通信
    • D-Bus包括一个用于对象接口运行时查询的标准自省机制,连接到总线的应用程序可以查询对象的可用性,对其调用远程方法,并请求对其发出的信号发出通知。
    • 之前: GNOME Bonobo , KDE DCOP , CORBA , Sun RPC …现在人们似乎更喜欢D-Bus
    UNO
    • 基于接口的组件模型,如COM和CORBA
    • 所有UNO接口必须从提供获取、发布和查询接口方法(与COM类似)的接口派生。
    • UNO对象的生存期由全局引用计数控制。
    • 组件仅通过其接口进行通信 o每个组件都存在于UNO运行时环境(UE)中,没有组件的性能开销,这些组件在相同的权限内实例化,例如在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

        4
  •  3
  •   On Freund    15 年前

    你可以退房 Corba 它也可以在Linux和Windows上工作。

        5
  •  3
  •   ars    15 年前

    Mono项目突然想到了。主要是因为clr/.net是新的com——毕竟,com最初是作为独立于语言、二进制兼容的对象销售的。

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

        6
  •  2
  •   Sean A.O. Harney    15 年前

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

    Here 是使用D总线的相对较少的程序列表

        7
  •  0
  •   Ben    12 年前

    DCOM在Linux上可用。这不是“Linux的做事方式”,但是,如果你想“喜欢DCOM,但是Linux”,那么就在Linux上使用DCOM,并且已经完成了……