Manuel 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>
Version 0.5.0
Traduit par I.V. Plastov, plastov.igor@yandex.ru
Document en cours de développement
Ce tutoriel est incomplet. Il contient probablement des informations utiles, mais il comporte également de nombreuses lacunes. Pour le moment, vous devez également consulter la spécification D-Bus, la documentation de référence Doxygen, et voir quelques exemples de la façon dont d'autres applications utilisent D-Bus.
Les améliorations apportées au manuel sont certainement les bienvenues - envoyez vos corrections ou suggestions à la liste de diffusion. Si vous créez une liaison D-Bus, veuillez ajouter une section tutoriel pour votre liaison, au moins une petite section avec quelques exemples.
Qu'est-ce que D-Bus?
D-Bus est un systĂšme de communication inter-processus (IPC). Architecturalement, il comporte plusieurs couches:
Une bibliothĂšque libdbus qui permet Ă deux applications de se connecter entre elles et d'Ă©changer des messages.
, 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
(Ă©galement disponible dans doc / tutorial.txt et doc / tutorial.html si construit avec python-documenttils , dans la distribution source dbus-python ).
API Qt
La liaison Qt pour libdbus , QtDBus, est distribuée depuis Qt 4.2. Ceci n'est pas documenté ici. Pour plus de détails sur l'utilisation de QtDBus, consultez la documentation Qt