|  |  |  |  | 
- Conceptual differences
- API comparison
- Owning bus names
- Creating proxies for well-known names
- Generating code and docs
- Using gdbus-codegen
- org.gtk.GDBus.Example.ObjectManager.Animal — Example docs generated by gdbus-codegen
- org.gtk.GDBus.Example.ObjectManager.Cat — More example docs generated by gdbus-codegen
- ExampleAnimal — Generated C code for the org.gtk.GDBus.Example.ObjectManager.Animal D-Bus interface
- ExampleCat — Generated C code for the org.gtk.GDBus.Example.ObjectManager.Cat D-Bus interface
- ExampleObject — Specialized GDBusObject types
- ExampleObjectManagerClient — Generated GDBusObjectManagerClient type
 
The central concepts of D-Bus are modelled in a very similar way in dbus-glib and GDBus. Both have a objects representing connections, proxies and method invocations. But there are some important differences:
- dbus-glib uses the libdbus reference implementation, GDBus doesn't. Instead, it relies on GIO streams as transport layer, and has its own implementation for the the D-Bus connection setup and authentication. Apart from using streams as transport, avoiding libdbus also lets GDBus avoid some thorny multithreading issues. 
- dbus-glib uses the GObject type system for method arguments and return values, including a homegrown container specialization mechanism. GDBus relies on the GVariant type system which is explicitly designed to match D-Bus types. 
- dbus-glib models only D-Bus interfaces and does not provide any types for objects. GDBus models both D-Bus interfaces (via the GDBusInterface, GDBusProxy and GDBusInterfaceSkeleton types) and objects (via the GDBusObject, GDBusObjectSkeleton and GDBusObjectProxy types). 
- GDBus includes native support for the org.freedesktop.DBus.Properties (via the GDBusProxy type) and org.freedesktop.DBus.ObjectManager D-Bus interfaces, dbus-glib doesn't. 
- The typical way to export an object in dbus-glib involves generating glue code from XML introspection data using dbus-binding-tool. GDBus provides a similar tool called gdbus-codegen that can also generate Docbook D-Bus interface documentation. 
- dbus-glib doesn't provide any convenience API for owning and watching bus names, GDBus provides the - g_bus_own_name()and- g_bus_watch_name()family of convenience functions.
- GDBus provides API to parse, generate and work with Introspection XML, dbus-glib doesn't. 
- GTestDBus provides API to create isolated unit tests GDBus Test Scaffolding. 
