Traducción de un artículo introductorio de los desarrolladores de D-BUS

Manual D-BUS

https://dbus.freedesktop.org/doc/dbus-tutorial.html, Red Hat, Inc <hp@pobox.com>

David Wheeler, John Palmieri, Red Hat, Inc. <johnp@redhat.com>

Colin Walters, Red Hat, Inc. <walters@redhat.com>

Versión 0.5.0

Traducido por I.V. Plastov, plastov.igor@yandex.ru

Documento en desarrollo

Este tutorial está incompleto. Probablemente contiene información útil, pero también tiene muchas lagunas. En este momento, también debe consultar la especificación D-Bus, la documentación de referencia de Doxygen y ver algunos ejemplos de cómo otras aplicaciones usan D-Bus.

Las mejoras al manual son definitivamente bienvenidas: envíe sus correcciones o sugerencias a la lista de correo. Si está creando un enlace D-Bus, agregue una sección de tutorial para su enlace, al menos una pequeña sección con un par de ejemplos.

¿Qué es D-Bus?

D-Bus es un sistema de comunicación entre procesos (IPC). Arquitectónicamente, tiene varias capas:

  • La biblioteca libdbus que permite que dos aplicaciones se conecten entre sí e intercambien mensajes.

  • ,  libdbus, . .

  • . , libdbus-glib  libdbus-qt. , Python. - API-, , D-Bus. libdbus  . API libdbus  .

 libdbus  -,  raw-. , , . , , . libdbus  ( - ) , .

. - ,  libdbus. , , . .

. - , , sendmail Apache. , , . . .

. IPC , .

D-Bus

, - « » «»: CORBA, DCE, DCOM, DCOP, XML-RPC, SOAP, MBUS, Internet Communications Engine (ICE) . . D-Bus :

  • ; ( ).

  • , .

GNOME KDE IPC, CORBA DCOP. D-Bus , , . D-Bus ; FAQ IPC.

, , Linux Hotplug:

Linux , - « ». , , . , , : , .

« », ( ) ( ). : , . ( , , .) Linux . D-Bus .

D-Bus , , . , IPC:

  • , ( X Window System);

  • ;

  • - , «» ;

  • , / / .

  • DCOP, KDE .

.

, D-Bus. , , GLib, Qt Python.

, .

/

, , , « »; . : java.lang.Object, GObject, QObject,  Python - . .

D-Bus API libdbus  . , . , .

, ,

/org/kde/kspread/sheet/3/cells/4/5

. - ,

/com/mycompany/c5yo817y0c1y1c5b

, .

- (,

/org/kde

). .

. - . - , , ( « ») ( « »).  - ; .

, , «Frobate» «OnClicked».

. , GLib, Qt Java. .

D‑Bus ,

org.freedesktop.Introspectable

. , , Java C++.

- - , . D‑Bus API , , . .  , -, DBus, , .

:

Message message = new Message("/remote/object/path", "MethodName", arg1, arg2);
          Connection connection = getBusConnection();
          connection.send(message);
          Message reply = connection.waitForReply(message);
          if (reply.isError()) {
      } else {
        Object returnValue = reply.getReturnValue();
      }

:

Proxy proxy = new Proxy(getBusConnection(), "/remote/object/path");
          Object returnValue = proxy.MethodName(arg1, arg2);

, , . ‘:’ ().  —  , . “:34–907”. , .

, , .

(well-known) . ,

com.mycompany.TextEditor

. ,

/com/mycompany/TextFileManager

,

org.freedesktop.FileHandler.

, .

IP-, . ,

com.mycompany.TextEditor

:34-907

,

mycompany.com

-

192.168.0.5

, , . . ( ), . , , . , .

«» . , , ,

com.mycompany.TextEditor

, , .

, D-Bus, , . ; . , . - .

, , . , .

D-Bus , , . ,

unix:path=/tmp/abcdef

, UNIX

/tmp/abcdef

  . TCP/IP , D-Bus.

D-Bus libdbus , . , UNIX ( ).

D-Bus , , ,  — , . .

, , :

, ,  —  . , .

 -> [ ] ->  ->  -> 

, ; DCOP , . , D-Bus , , , .

D-Bus , . , .

4 :

  • ;

  • ;

  • , ;

  •  —  , ( ). « ».

: , .

, , , . ,  —  . , , .  —  , , . , «i» «32- », «ii» , 32- .

 

D-Bus ; , A B, , B A. , . , , .

. , .

D-Bus :

  • , . , -, .

  • API , .

  • : , , , , , , , .

  • .

  • . , . .

  • . API . API , , (GObject, java.lang.Object, QObject, . .), .

  • , .

  • , , , . , . - .

. , , , . ; , , . , .

D‑Bus , .  —  . ( ), , « ». (. #), .

( ) . « » —  . , .

D‑Bus :

  • . API , , .

  • , , , , ; .

  • « », , . .

  • , . .

  • , , , ; , -. API , .

D-Bus

org.freedesktop.DBus.Introspectable

Introspect, XML. XML , . . D-Bus .

GLib API

GLib API D-Bus — GDBus, GLib 2.26. , , GDBus . GLib :

https://developer.gnome.org/gio/stable/gdbus-convenience.html

API, dbus-glib. . dbus-glib GDBus.

Python API

Python API, dbus-python, dbus-python 

http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html

 (también disponible en doc / tutorial.txt y doc / tutorial.html si se construyó con python-documenttils , en la distribución fuente dbus-python ).

API de Qt

El enlace Qt para libdbus , QtDBus, se distribuye desde Qt 4.2. Esto no está documentado aquí. Para obtener detalles sobre cómo usar QtDBus, consulte la documentación de Qt

 http://qt-project.org/doc/qt-5/qtdbus-index.html .




All Articles