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