D-BUS
![]() ![]() | |||||||||||||
Tipus | biblioteca informàtica, programari lliure, protocol de xarxa d'ordinadors i Message-oriented middleware ![]() | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Versió estable | 1.14.10 (1r setembre 2023) 1.15.8 (21 agost 2023) ![]() | ||||||||||||
Llicència | GNU GPL 2.0 Academic Free License ![]() | ||||||||||||
Part de | escriptori Linux ![]() | ||||||||||||
Característiques tècniques | |||||||||||||
Escrit en | C ![]() | ||||||||||||
Equip | |||||||||||||
Desenvolupador(s) | Red Hat ![]() | ||||||||||||
Fonts de codi
| |||||||||||||
Més informació | |||||||||||||
Lloc web | freedesktop.org… (anglès) ![]() | ||||||||||||
Stack Exchange | Etiqueta ![]() | ||||||||||||
Free Software Directory | D-Bus ![]() | ||||||||||||
| |||||||||||||
D-Bus és un sistema de programari que proporciona una forma simple de comunicació entre diverses aplicacions, desenvolupat com a part del projecte freedesktop.org.
Arquitectura
D-BUS és un mecanisme de comunicació entre processos (IPC) consistent en tres capes:
- Una llibreria, libdbus, que permet a dos aplicacions connectar-se i intercanviar missatges.
- Un dimoni executable que funciona com a bus de missatges, construït sobre libdbus, al qual poden connectar-s'hi diverses aplicacions. El dimoni pot encaminar missatges des d'una aplicació a cap o a més aplicacions.
- Llibreries adaptades (wrappers en anglès) pel seu ús en entorns de treball (framework) concrets.
Els dos principals punts d'ús de D-BUS són els següents:
- Comunicació entre aplicacions d'escriptori en la mateixa sessió, facilitant la integració d'aplicacions dins d'un mateix entorn d'escriptori i el tractament d'assumptes relatius al cicle de vida de processos.
- Comunicació entre el sistema operatiu i la sessió d'escriptori, incloent dins del sistema operatiu el nucli i alguns dimonis o processos.
Funcionament de D-BUS
Tota aplicació que utilitza D-BUS conté objectes, normalment definits (tot i que no és necessari) com GObject, QObject, objectes C++ o objectes Python. Quan es rep un missatge a través d'una connexió D-BUS, aquest s'envia a un objecte específic, no globalment a l'aplicació. D'aquest forma, D-BUS s'aguanta en components de programari, i de cara a l'usuari sembla com si un objecte fos serializat a través de la connexió IPC, sense importar si existeix o no un objecte a l'altre cantó de la comunicació.
Per permetre l'especificació de destí als missatges, ha d'existir un medi per indicar aquesta referència. En molts llenguatges de programació, això rep el nom de punter o referència. Tot i així, aquestes referències s'implementen com a adreces de memòria relatives a l'espai de direccions de l'aplicació, el qual no pot intercanviar-se d'una aplicació a una altra.
Per arreglar això, D-BUS introdueix un nom per cada objecte. Aquest nom es mostra com una ruta del sistema de fitxers. Per exemple, un objecte es podria dir /org/kde/kspread/sheets/3/cells/4/5. Resulta aconsellable utilitzar rutes fàcilment llegibles per humans, tot i que els desenvolupadors són lliures de crear objectes amb noms com /com/mycompany/c5yo817y0c1y1c5b, si així ho desitgen.
Els noms d'objectes D-BUS s'aglutinen en l'espai de noms per assegurar que mòduls diferents de codi es mantinguin separats. Els espais de noms generalment estan prefixats en funció dels components utilitzats pels mateixos programadors (per exemple, /org/kde)
Vegeu també
Enllaços externs
- D-BUS a Freedesktop.org (anglès)
- Tutorial de D-BUS (anglès)