Introducció a D-Bus

bus-hierarchy-conceptual

Si portes un temps a Linux potser t'hagis arribat a preguntar que és D-Bus. D-Bus és un component incorporat no fa gaire a les distribucions d'escriptori en Linux que previsiblement jugarà un paper molt important per a la programació en Linux.

Què és D-Bus?

D-Bus és un sistema de comunicació entre aplicacions de molt divers origen. Amb aquest sistema podrem cridar fins i tot a aplicacions privatives (si aquestes implementen D-Bus). No juga el mateix paper que una llibreria doncs una llibreria no és un programa independent i la llibreria forma part del teu executable. La idea de D-Bus està inspirada en els objectes OLE, COM i ActiveX de Windows. Els objectes COM de Windows ofereixen una manera senzilla de cridar a qualsevol programa des d'un altre programa arribant fins i tot a poder incrustar visualment un dins d'un altre sense necessitat d'usar el mateix llenguatge de programació. D-Bus no arriba tan lluny però ofereix aquesta comunicació de la qual UNIX mancava.

Per què és important D-Bus?

D-Bus és important donada la gran diversitat de llenguatges que poden funcionar en Linux i la gran diversitat també de llibreries. Posem un exemple pràctic. Jo vull enviar una notificació al sistema notify-osd d'Ubuntu des de la meva aplicació en Node.js. Primer hauria de veure que llibreria ofereix aquesta funcionalitat en el sistema, libnotify en aquest cas, i després hauria de fer uns bindings per poder cridar la llibreria programada en C des de JavaScript. A més imaginem que volem fer funcionar la nostra aplicació amb un escriptori que no fa servir libnotify per a les notificacions.

Usant D-Bus

Llavors hem decidit que farem servir D-Bus per crear la notificació de la nostra aplicació en JavaScript.

https://gist.github.com/AdrianArroyoCalle/99d2ea6db92e90a54e2c

Hi ha 2 tipus de busos en D-Bus, un D-Bus únic a el sistema i un D-Bus per a cada sessió d'usuari. Després en D-Bus tenim serveis que són «els noms dels proveïdors D-Bus», una mena de les aplicacions D-Bus. Després en una estructura com de carpeta hi ha els objectes que pot tenir aquest servei o instàncies i finalment la interfície és la manera d'interactuar amb els objectes d'aquest servei. En aquest cas és molt redundant ja que el servidor de notificacions és molt simple.

Qui fa servir D-Bus?

Més programes dels que imagines usen D-Bus. Alguns serveis de D-Bus només per nomenar exemples són:

  • com.Skype.API
  • com.canonical.Unity
  • org.freedesktop.PolicyKit1
  • org.gnome.Nautilus
  • org.debian.apt
  • com.ubuntu.Upstart

Per esbrinar tots els serveis de D-Bus que tens instal·lats pots utilitzar d-feet

D-Peus


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   neysonv va dir

    interessant. tant de temps veient-, i no sàvia ni que era

  2.   Yukiteru va dir

    El de d-feet si que no el coneixia, he programat algunes coses especialment scripts per XChat (Clementine, Audacious) usant DBus i la veritat, haver conegut aquesta eina m'hagués estalviat la bogeria de caminar llegint-me el manual d'MPRIS i les diferents interfícies DBus de Clementine i Audacious.

  3.   Gabriel va dir

    Realment és un molt bon article, gràcies

  4.   pecador va dir

    mira tu la meva ignorància; tants problemes amb dbus a FreeBSD, gentoo i havien de i mai vaig saber que era ... .de fet encara no ho sé però el teu post em a donat una idea succinta a el menys.

  5.   Nota va dir

    > D-Bus és un component incorporat no fa gaire a les distribucions d'escriptori en Linux.

    No fa gaire ????? El faig servir des de 2005.

    Una altra cosa és kdbus que sí que és recent. És, simplificant, la integració de dbus dins el nucli.

    1.    AdrianArroyoCarrer va dir

      Segueix sent poc temps més que res perquè D-Bus requereix que la resta de components de el sistema ho comencin a fer servir per poder ser plenament funcional.