Managed D-Bus 0.1: An alternative D-Bus implementation

Alp Toker alp at atoker.com
Wed Oct 11 06:01:40 PDT 2006


Managed D-Bus/dbus-sharp 0.1 is now available. Based around a clean-room 
implementation of the D-Bus protocol and specification version 0.11, 
dbus-sharp is a full-featured .NET IPC library that is fully compatible 
with libdbus and released under the MIT license.

It can be obtained at http://www.ndesk.org/DBusSharp

There is a git repository at git://git.ndesk.org/pub/scm/dbus-sharp

dbus-sharp (not related to older bindings such as dbus-mono which wrap 
libdbus) features native and intuitive support for generic collections, 
structs, variants as well as pluggable transports and portability across 
multiple architectures, platforms and runtimes without recompilation.

GLib main loop integration is provided by an additional library, 
dbus-sharp-glib: git://git.ndesk.org/pub/scm/dbus-sharp-glib

Work is currently under way to produce a full-featured managed D-Bus 
daemon, with initial efforts directed towards completion of selinux 
libraries necessary to support such a daemon. This is necessary to 
support the single precision floating point primitive type available in 
managed D-Bus, as libdbus developers have been unwilling to accommodate 
this feature request before their 1.0 release.

There is also ongoing work to complete cilc, a tool that can generate 
GObject C interface bindings for managed D-Bus API 
(http://www.ndesk.org/Cilc) and there has been progress towards 
supporting the existing dbus-python API through the IronPython .NET 
language implementation.

The managed D-Bus library is particularly suited to programmers 
demanding high performance, clean API and portability whilst avoiding 
unmanaged dependencies. Since marshallers are dynamically compiled to 
highly optimized machine code with much consideration given to 
concurrency, managed D-Bus is theoretically able to surpass static IPC 
implementations such as libdbus in performance. However, optimization is 
ongoing and there are not yet any solid figures, so this is just 
conjecture for now.

Managed D-Bus is not yet considered suitable for use by stable 
applications, however a number of applications and libraries have 
already become early adopters, either moving away from libdbus or 
becoming D-Bus consumers for the first time:

     * NDesk component object model (NParts etc.)
     * telepathy-sharp
     * Tapioca VoIP and IM application development framework
     * Landell VoIP and IM client using Gtk#
     * Banshee provides and uses a media player API, and uses Gnome 
Power Manager, Gnome NetworkManager, notify-sharp
     * hal-sharp is provides access to HAL, the Hardware Abstraction Layer
     * NotifySharp provides a client implementation for Desktop 
Notifications and works as a libnotify client replacement
     * F-Spot personal photo management application, for single-instance 
detection [1]
     * "NewStuffManager"-based CLR plugin update tool
     * Notiz, Xgl/compiz-sharp based Notifications implementation with 
3D effects

It is hoped that the successful development and adoption of managed 
D-Bus has provided verification of the completeness of the D-Bus 
specification and I look forward to working together with libdbus 
developers on future protocol extensions.


More information about the dbus mailing list