Dbus

DBus

Terminología

  • DBus: Sistema software que proporciona una forma de comunicación entre aplicaciones. Página del proyecto aquí.
  • Gui: Graphic User Interface o interfaz gráfica de usuario, es la parte visual y la mayor parte del Frontend.
  • Backend: Proceso oculto al usuario, pero que suele contener el núcleo del programa que se está desarrollando.
  • Objeto: Objeto básico que utiliza DBus en el intercambio de información entre dos procesos.
  • Proceso: Unidad de ejecución independiente en un sistema operativo.

Descripción del módulo DBus.

DBus no es un módulo en sí, esta tecnología va a estar presente tanto en la gui como en el backend (en sus distintos módulos). Para utilizarlo basta con importar la librería dbus (import dbus en python por ejemplo).
Se podría pensar en dbus como si fuera una aplicación cliente-servidor bidireccional. Una parte se programa con objetos/rutas que enlazan esa ruta con unos métodos del módulo en el que están presente. La otra parte permite conectar esos objetos/rutas para poder utilizarlos en el módulo destino.
Esto nos permite en nuestro caso comunicar la gui con el backend, que son procesos diferentes pero necesitan información uno del otro. Para ello tenemos que crear objetos dbus y funciones para la conexión con otros objetos en ambos módulos.

Abstracción al problema

Vamos a utilizar DBus básicamente para conectar gui con backend del programa de una forma sencilla y eficiente. La gui le pedirá al backend información, por ejemplo, de la lista de carpetas que están siendo indexadas, para poder mostrarlas; y el backend recibirá información de la gui sobre todas las modificaciones que se hagan a través de esta de la configuración del programa, por ejemplo al añadir una carpeta a indexar en la gui, se enviará un mensaje al backend para que este la indexe.

Abstracción a la solución

Paso de mensajes de la gui al backend y viceversa (se realiza exactamente de la misma manera)

  1. Se crea un objeto en el módulo que va a enviar el mensaje.
  2. El módulo que quiere recibir el mensaje conecta con el objeto (mediante espacios de nombres)
  3. El módulo que recibe el mensaje utiliza métodos que le aporta el objeto del otro módulo.

Tecnologías

DBus es una tecnología en auge en los últimos tiempos, quiere convertirse en un standard en la comunicación interprocesos. Existen otras tecnologías muy similares a DBus, como por ejemplo DCOP, pero nos hemos decantado por DBus ya que en los últimos tiempos gran cantidad de aplicaciones de escritorio lo utilizan, y sobre todo en Ubuntu, en el que es ya casi un standard.

Opinión personal

DBus es una tecnología muy potente y flexible, que puede desempeñar correctamente la tarea de comunicar la gui con el backend.
Por lo que hemos estado investigando, no parece demasiado difícil de usar, puede ser algo engorroso al principio ya que se necesita asimilar el concepto de los objetos/rutas e interfaces.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License