D-Bus es un sistema de comunicación entre procesos que permite que las aplicaciones del sistema operativo se comuniquen entre sí.
D-Bus es parte del proyecto freedesktop.org . Tiene una alta velocidad, no depende del entorno de trabajo, se ejecuta en sistemas operativos compatibles con POSIX , también hay una versión para Windows (todavía en desarrollo) [1] .
autobús | |
---|---|
Tipo de | CIP |
Desarrollador | FreeDesktop.org |
Escrito en | C |
Sistema operativo | plataforma cruzada |
ultima versión | 1.14.0 (28 de febrero de 2022 [2] ) |
Versión de prueba | 1.15.0 |
Licencia |
GNU GPL v2 o AFL 2.1 |
Sitio web | freedesktop.org/wiki/Sof... |
Consta de dos partes: un demonio y una API de bajo nivel . Hay bibliotecas de alto nivel para los frameworks Qt , Java , GLib , C# , Python , Ruby y una biblioteca para C++ .
Las aplicaciones del mismo entorno de escritorio deben interactuar estrechamente entre sí. El entorno gráfico de KDE utilizó DCOP para esto no hace mucho tiempo , pero otros entornos de escritorio (como GNOME ) no tenían sistemas similares.
Era posible comunicarse a través de CORBA , SOAP o XML-RPC , pero CORBA es más adecuado para sistemas de nivel empresarial que para entornos gráficos de escritorio ( KDE y GNOME han pasado la etapa de usar CORBA durante su existencia , mientras que SOAP y XML- RPC están destinados a los servicios web) .
GNOME solía usar Bonobo , que está basado en CORBA , pero debido a su dependencia de GObject , Bonobo no se usaba en otros entornos de escritorio y CORBA era lento. afectó la velocidad de todo el entorno.
Se requería organizar el intercambio de mensajes entre aplicaciones de dos entornos diferentes. Para solucionar este problema se creó el proyecto D-Bus. La implementación fue exitosa y posteriormente se decidió mover el proyecto KDE 4 para usar D-Bus .
D-Bus proporciona al sistema varios buses:
Cada mensaje D-Bus enviado por el bus tiene su propio remitente. Si el mensaje no es una señal de difusión, también tiene un destinatario. Las direcciones de remitentes y destinatarios se denominan rutas de objetos, ya que D-Bus asume que cada proceso en el sistema consta de un conjunto de objetos, y los mensajes no se envían entre aplicaciones, sino entre objetos de estas mismas aplicaciones.
Cada objeto puede admitir una o más interfaces, representadas como grupos de métodos y señales con nombre, similares a las interfaces Glib , Qt o Java .
D-Bus también contempla el concepto de servicios. Un servicio es una ubicación única de un proceso de software en el bus. Al inicio, el programa registra uno o más servicios que poseerá hasta que se libere, hasta entonces ningún otro programa que reclame el mismo servicio puede ocuparlo. Los servicios se nombran de manera similar a las interfaces . Después de cerrar (completar) el programa, los servicios asociados también se eliminan del registro de D-Bus, mientras que D-Bus envía una señal de que el servicio está cerrado.
Los servicios D-Bus ponen a disposición otra función: el lanzamiento de los programas necesarios en caso de mensajes para ellos. Para hacer esto, la activación automática debe estar habilitada y un programa debe estar asignado a este servicio en la configuración de D-Bus.
Después de conectarse al bus, el programa debe especificar qué mensajes quiere recibir agregando máscaras de comparación . Las máscaras de coincidencia son conjuntos de reglas para los mensajes que se entregarán al programa. El filtrado se puede basar en interfaces, rutas de objetos y métodos.
Hay 4 tipos de mensajes en D-Bus:
En D-Bus, cada objeto tiene su propio nombre único, que parece una ruta en el sistema de archivos. Por ejemplo, el objeto podría llamarse " /org/kde/kspread/sheets/3/cells/4/5 ". Se prefieren los nombres que tienen algún significado, sin embargo, los desarrolladores pueden elegir nombres como " /com/mycompany/c5yo817y0c1y1c5b " si eso tiene sentido para su programa.
Los nombres de los objetos están en espacios de nombres para ayudar a distinguir entre diferentes módulos de programa. Los espacios de nombres generalmente reciben un prefijo específico del desarrollador, como /org/kde .
![]() |
---|
Componentes | ||
---|---|---|
bibliotecas | ||
Marcos |
| |
Reuniones |
|
Comunicación entre procesos | |
---|---|
Métodos | |
Protocolos y estándares seleccionados |
GNOMO | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Aplicaciones |
| ||||||||||||||||
Aplicaciones |
| ||||||||||||||||
Componentes | |||||||||||||||||
Arquitectura de plataforma |
| ||||||||||||||||
Comunidad | |||||||||||||||||
Gente | |||||||||||||||||
|