2009-07-26 24 views

答えて

8

はい、多くのことがありますが、COM/DCOMとして「標準」とはありません。少なくとも、WindowsではCOM/DCOMは "Windowsの"もので使用され、他のRPCの仕組みはWindows以外のもので使われます。

Linuxにはそのようなものはありません。代わりに、より高度なRPCプロトコルを必要とするものは、通常、言語が提供するものを使用します。または、アプリケーションのニーズに最も適した特定のライブラリです。その例は、JavaのRMI、Pythonの「pyro」モジュールなどであり、DCOMで(いくつかの)機能的なパリティを提供します。

コーバは少し重量がありますが、一部の人々は明らかにそれを使用しています。

多くのアプリケーションが独自のRPCライブラリを公開しています。あなたがしなければ、それは厄介です。

+0

Sun RPC -ONCはCOM/DCOMと同じことをしていますか? –

+0

[ONC RPC](https://en.wikipedia.org/wiki/Open_Network_Computing_Remote_Procedure_Call)は[DCE/RPC](https://en.wikipedia.org/wiki/DCE/RPC)または[MSRPC ](https://en.wikipedia.org/wiki/Microsoft_RPC)。そのIDLははるかに簡単で、機能が少なくなっています。 [Distributed COM](https://en.wikipedia.org/wiki/Distributed_Component_Object_Model)は、MSRPCに基づいて通信しますが、そのレベルを超える多くの複雑な処理を行います。例えば、「AddRef」と「QueryInterface」を避けるためのプロキシオブジェクトキャッシュです。ラウンドトリップ、ガベージコレクションのためのping、COM固有のメモリ管理など – acelent

+0

** Linuxにはこのようなものはありません**:* dbus *はかなり近づいています:アプリケーションはRPCメソッドとイベントを公開することができます。これらのメソッドをイントロスペクションしてからリモートで呼び出します。 **多くのアプリケーションが独自のRPCライブラリを公開しています。あなたがしなければ、それは厄介です**私は間違いなくポイントを参照してください。一方、私はemacsやgimpのようなものはかなり良いRPCライブラリを持っていると言うでしょう。アプリケーションが複雑になればなるほど、独自のRPCメカニズムが必要になるでしょう! –

11

プロセス間通信では、D-Busが標準の上位レベルのメカニズムです。 GTKとQtの両方にD-Busのバインディングがあり、ほとんどのデスクトップ環境(または少なくともGNOMEとKDE)はD-Bus経由でさまざまなサービスを公開しており、多くのデスクトップアプリケーションはD-Busインタフェース経由で制御できます。システムバスは、標準システムサービスを使用して、システムに関するさまざまな低レベルの情報を見つけるのにも役立ちます。

KDE4(Qt4をベースにしています)には、KPartsと呼ばれるテクノロジも含まれています.KPartsは、WindowのCOMとよく比較されます。

+5

"プロセス間通信では、D-Busが標準メカニズムです。 それは?ソケット、共有メモリ、メッセージキュー、およびセマフォは、POSIX環境の標準プロセス間通信のメカニズムがどのようなものかを尋ねると、私が言うことです。 – smcameron

+3

D-Busは、あなたがリストする基本的なメカニズムよりも高いレベルであり、COM/DCOMに匹敵し、Linuxで広く普及しています(他の多くのバージョンはUnixの他のバージョンから継承されています - もちろんレベルのメカニズム)。 –

+0

piginプラグインの代わりにD-Bus経由で動作するPigin IMコントローラを書くことができます。 dbus-monitor --sessionを実行すると、D-Busにあなたの会話の中のすべてを載せることができます。 –

2

MozillaのXPCOMテクノロジ、クロスプラットフォームコンポーネントオブジェクトモデルがあります。 COMまたはDCOMに似ています。

Hereは、それは同様にLinuxとWindows上で動作し、あなたがCorbaをチェックアウトすることができD-バス

3

を利用して行う、比較的少数のプログラムのリストです。

3

Monoプロジェクトが頭に浮かびます。主にCLR/.NETが新しいCOMであるため、COMは当初は言語に依存しないバイナリ互換オブジェクトとして販売されていました。

私はDCOM(長いワイヤーで、すなわちCOM)は、.NETリモーティングだろうと思いますか?あるいは、オブジェクト直列化を持ついくつかのWebサービスです。私はモノが両方をサポートしていると思います。

4
D-Bus
  • D-Busが接続されたアプリケーションは、
  • 通信は単純介して行われる通信することができる上に論理 "バス" を使用suppするオブジェクトモデル
  • D-Busには、オブジェクトインターフェイスの実行時クエリのための標準的なイントロスペクションメカニズムが含まれています。バスに接続されているアプリケーションは、オブジェクトの可用性を問い合わせ、リモートメソッドを呼び出し、要求します彼らは前
  • 発する信号の通知:GNOME BonoboKDE DCOPCORBASun RPCを...、今日の人はD-バス
UNO
  • インターフェースベースのコンプを好むように見えます(COMに匹敵する)
  • UNOオブジェクトの有効期間は、グローバル参照によって制御されます(COMに匹敵する)
  • すべてのUNOインターフェイスは、取得、解放、およびqueryInterfaceメソッドカウント。
  • コンポーネントはそれぞれのインターフェイスを介してのみ通信します 各コンポーネントはUnoランタイム環境(URE)に存在します。コンポーネントのパフォーマンスオーバーヘッドはなく、同じURE内でインスタンス化されます。たとえば、C++ではコンポーネントAからBは単なる仮想呼び出しです
  • IDO
  • でエラー処理に例外が使用されています。 XPCOMで
  • インタフェースはIDLの方言で定義されているマイクロソフトCOMに似XPCOM
    はXPIDL
  • 欠点はXPCOMが異なる使用の間でオブジェクトを整列化するために多くのコードを追加することであると呼ばれますXPCOMベースのシステムではコードが肥大化します。

...別の代替案IDERは、同様に

それは関連の質問を見ても価値が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

関連する問題