
大量の DBus チュートリアルを読んだにもかかわらず、全体の概念を理解するのにまだ苦労しています。私の意見では、これはこれまでで最も優れた説明の 1 つです。
http://telepathy.freedesktop.org/doc/book/sect.basics.dbus.html
DBus を使用する理由は、異なるプログラム間でデータを交換するためです。私の意見では、サーバー、または図 2-2 で名前が付けられているようなサービスを提供すれば十分でしょう。このサービスは、クライアントと共有するインターフェイスを介していくつかのメソッドを提供します。
次に、クライアントはメソッドを呼び出して応答を取得します。
では、何が足りないのでしょうか? 追加のオブジェクトが必要なのはなぜですか?
これは、オブジェクトとクラスの Java 規則に従うだけだと思います。各オブジェクトはインスタンスを表します。誰かにそれを確認してもらいたいです。
最初のシステムが 2 番目のシステムよりも優れている点は何ですか?
答え1
慣例によるものではなく、高レベルのバインディングを容易にするためです。
おそらく、プログラミング フレームワークでは、基本クラスを使用して「オブジェクト」がどのようなものかを定義します。たとえば、java.lang.Object、GObject、QObject、Python の基本オブジェクトなどです。これをネイティブ オブジェクトと呼びましょう。
低レベルの D-Bus プロトコルは、ネイティブ オブジェクトを考慮しません。ただし、オブジェクト パスと呼ばれる概念を提供します。オブジェクト パスの考え方は、高レベルのバインディングがネイティブ オブジェクト インスタンスに名前を付け、リモート アプリケーションがそれらを参照できるようにするというものです。
編集:
おそらく、オブジェクトの使用を避けるために、libdbusに組み込まれているAPIとメッセージバスデーモンを使用するだけで、次のような通信アプローチで終わるでしょう。メソッドを呼び出して応答を取得するクライアントただし、libdbus は高レベル バインディングの低レベル バックエンドとして意図されているため、libdbus API の多くはバインディング実装にのみ役立つことに注意してください。