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