
Apesar de ler vários tutoriais do DBus, ainda tenho dificuldade para entender todo o conceito. Na minha opinião esta foi uma das melhores explicações até agora:
http://telepathy.freedesktop.org/doc/book/sect.basics.dbus.html
A razão para usar o DBus é porque quero trocar dados entre diferentes programas. Na minha opinião, seria suficiente fornecer um servidor ou, como mencionado na Figura 2.2, um serviço. Este serviço fornece vários métodos em uma interface que compartilho com o cliente.
O cliente então invoca um método e obtém uma resposta.
Então, o que estou perdendo? Por que há necessidade de objetos adicionais?
Eu acho que é apenas seguir as convenções Java de objetos e classes, respectivamente. Cada objeto representa uma instância. Gostaria muito que alguém confirmasse isso.
Qual é a vantagem do primeiro sistema em relação ao segundo?
Responder1
Não por convenção, mas para facilitar vinculações de alto nível.
Objetos nativos e caminhos de objetos
Sua estrutura de programação provavelmente define como é um "objeto"; geralmente com uma classe base. Por exemplo: java.lang.Object, GObject, QObject, objeto base do python ou qualquer outro. Vamos chamar isso de objeto nativo.
O protocolo D-Bus de baixo nível, ..., não se preocupa com objetos nativos. No entanto, ele fornece um conceito chamado caminho do objeto. A ideia de um caminho de objeto é que ligações de nível superior possam nomear instâncias de objetos nativos e permitir que aplicativos remotos se refiram a elas.
Editar:
Provavelmente você pode apenas usar a API e o daemon do barramento de mensagens construído no libdbus para evitar o uso de objetos e terminar com sua abordagem de comunicação deum cliente que invoca um método e obtém uma resposta. No entanto, esteja ciente de que o libdbus se destina a ser um backend de baixo nível para ligações de nível superior, portanto, grande parte da API do libdbus é útil apenas para implementação de ligação.