您已经注意到,有各种可用的D-Bus绑定。正如Ignacio所说,您可以使用它们中的任何一个,因为它们都使用相同的协议-
但是某些绑定比某些绑定更适合某些情况。
推荐的高级绑定:
- GDBus是基于GLib / GObject的高级绑定。如果您要基于GNOME技术或GLib编写服务或应用程序,则适合使用。它是用C语言编写的,但是使用gobject-introspection可以为其他语言提供绑定(在各种功能级别上)。
- QtDBus是基于Qt的高级绑定。如果您要基于Qt编写服务或应用程序,则适合使用。它是用C ++编写的。
推荐的低级绑定:
- sd-bus是一个较低级别的绑定,几乎没有依赖项。如果您正在编写系统服务或系统应用程序,并且未使用GLib或Qt,则是合适的。用C写的。
不 推荐的绑定:
- libdbus是官方D-Bus实现随附的较低级别的绑定。它已经很老了,自编写以来,设计D-Bus API的最佳实践已得到改进。建议你 不 使用libdbus。正如文档所述:“如果您直接使用此低级API,则可能会有些麻烦。” 使用起来很尴尬。用C写的。
- dbus-glib是与官方D-Bus实施相关的高级绑定。像libdbus一样,它已经很老了,自那时以来,最佳实践一直在发展。建议你 不 使用的dbus-油腔滑调,并使用GDBus代替。使用起来很尴尬。用C写的。
可以使用其他语言的各种绑定,但是我不确定它们的相对优点(如果有人要编辑此答案以涵盖这些优点,那将是很好的)。



