D-Bus

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Desenvolvedor Red Hat e a comunidade
Lançamento novembro de 2006 (11 anos)
Versão estável 1.10.0[1] (25 de agosto de 2015; há 3 anos)
Linguagem C
Sistema operacional Multiplataforma
Gênero(s) Linux em desktop
Licença GNU GPL versão 2 ou superior ou AFL 2.1[2]
Página oficial www.freedesktop.org/wiki/Software/dbus

Em computação, D-Bus ou DBus (acrônimo para Desktop Bus, em inglês, ou Barramento de área de trabalho, em português), um barramento de software, é um mecanismo de comunicação entre processos (CIP) e chamada de procedimento remoto que possibilita a comunicação entre vários programas de computador (isto é, processos) rodando simultaneamente na mesma máquina. O D-Bus foi desenvolvido como parte do projeto freedesktop.org, iniciado por Havoc Pennington da Red Hat para padronizar serviços fornecidos pelos ambientes de desktop do Linux como GNOME e KDE.

O projeto freedesktop.org também desenvolveu uma biblioteca de software livre e de código aberto chamada libdbus, como uma implementação de referência da especificação. Esta biblioteca é geralmente confundida com o próprio D-Bus. Outras implementações da biblioteca cliente do D-Bus também existem, como GDBus (GNOME), QtDBus (Qt/KDE), dbus-java e sd-bus (parte do systemd).

Visão geral[editar | editar código-fonte]

D-Bus é um mecanismo de comunicação entre processos inicialmente concebido para substituir os sistemas de comunicação de componentes de software usados pelos ambientes de desktop Linux GNOME e KDE (CORBA e DCOP, respectivamente). Os componentes desses ambientes de desktop são normalmente distribuídos em muitos processos, cada um fornecendo apenas alguns - normalmente um - serviços. Esses serviços podem ser usados por aplicativos clientes regulares ou por outros componentes do ambiente de desktop para executar suas tarefas.

Processos sem o D-Bus
Processos sem o D-Bus
Processos com o D-Bus
Os mesmos processos com o D-Bus
Grandes grupos de processos cooperativos demandam uma densa malha de canais individuais de comunicação (usando métodos de comunicação entre processos um-para-um) entre eles. O D-Bus simplifica os requisitos de comunicação entre processos com um único canal compartilhado.

Devido ao grande número de processos envolvidos - incluindo processos que fornecem os serviços e os clientes acessando-os - o estabelecimento de comunicações CIP um-para-um entre todos torna-se uma abordagem ineficiente e pouco confiável. Em vez disso, o D-Bus fornece uma abstração de barramento de software que reúne todas as comunicações entre um grupo de processos em um único canal virtual compartilhado. [6] Processos conectados a um barramento não sabem como ele é implementado internamente, mas a especificação D-Bus garante que todos os processos conectados ao barramento possam se comunicar entre si através dele.

Os ambientes de desktop Linux aproveitam as facilidades do D-Bus instanciando não um barramento, mas muitos:

  • um único barramento de sistema, disponível para todos os usuários e processos do sistema, que fornece acesso aos serviços do sistema (ou seja, serviços fornecidos pelo sistema operacional e também por quaisquer daemons do sistema)
  • um barramento de sessão para cada sessão de login do usuário, que fornece serviços de área de trabalho para aplicativos do usuário na mesma sessão da área de trabalho e permite a integração da sessão da área de trabalho como um todo

Um processo pode se conectar a qualquer número de ônibus, desde que tenha acesso a eles. Na prática, isso significa que qualquer processo do usuário pode se conectar ao barramento do sistema e ao seu barramento de sessão atual, mas não aos barramentos de sessão de outro usuário, ou mesmo a um barramento de sessão diferente pertencente ao mesmo usuário. A última restrição pode mudar no futuro se todas as sessões do usuário forem combinadas em um único barramento do usuário.

O D-Bus fornece recursos adicionais ou simplifica a funcionalidade existente para os aplicativos, incluindo compartilhamento de informações, modularidade e separação de privilégios. Por exemplo, informações sobre uma chamada de voz recebida via Bluetooth ou Skype podem ser propagadas e interpretadas por qualquer reprodutor de música atualmente em execução, que pode reagir alterando o volume ou pausando a reprodução até que a chamada seja finalizada.

O D-Bus também pode ser usado como uma estrutura para integrar diferentes componentes de um aplicativo de usuário. Por exemplo, um pacote de escritório pode se comunicar através do barramento de sessão para compartilhar dados entre um processador de texto e uma planilha.

Referências

  1. «Announcing D-Bus 1.10.0 (new stable branch)». 25 de agosto de 2015. Consultado em 25 de agosto de 2015. 
  2. Havoc's Blog July, 2007