DBusSharp
From NDesk
Revision as of 14:49, 4 July 2007 (edit) Alp (Talk | contribs) ← Previous diff |
Revision as of 17:32, 23 August 2007 (edit) (undo) Alp (Talk | contribs) Next diff → |
||
Line 134: | Line 134: | ||
See the [http://www.ndesk.org/archive/dbus-sharp/ managed D-Bus release archive]. | See the [http://www.ndesk.org/archive/dbus-sharp/ managed D-Bus release archive]. | ||
- | 0.4.x is the stable branch, while 0.5.x features ongoing performance, portability and thread safety work. | + | 0.4.x is the old stable branch, while 0.5.x is now the current stable branch and features improved performance, portability and thread safety work. |
dbus-sharp-glib 0.3 is the current stable release for GLib integration. | dbus-sharp-glib 0.3 is the current stable release for GLib integration. |
Revision as of 17:32, 23 August 2007
dbus-sharp is a C# implementation of D-Bus. It's often referred to as "managed D-Bus" to avoid confusion with existing bindings (which wrap libdbus).
D-Bus is an inter-process communication framework that lets applications interface with the system event bus as well as allowing them to talk to one another in a peer-to-peer configuration.
Contents |
Status
This software is under development but is already used by a wide range of applications for tasks as simple as maintaining a single instance of the GUI to whole instant messaging frameworks and hardware detection APIs.
It provides a tested, high-performance bridge to and from all systems that are exposed via D-Bus, regardless of programming language, UI toolkit or license. The source code is MIT X11 licensed (Free Software/Open Source), allowing integration into other projects with very few restrictions.
The code is a clean-room implementation based on the D-Bus Specification Version 0.11 and study of the wire protocol of existing tools.
It aims for compatibility with Mono and Microsoft .NET frameworks supporting the 2.0 profile. Backward compatibility with 1.0 will not be a consideration. Ongoing work to ensure CLS compliance means that managed D-Bus can be used by any language that can target the CLR.
Cross platform support
Supported platforms
A standard build of managed D-Bus will work across a wide range of platforms:
- x86
- 64-bit (eg. AMD64)
- Big endian (eg. PPC)
- ARM (eg. Nokia 770)
- Mono 1.1.13 or newer
- GNU/Linux
- FreeBSD
- Mac OS X
- Microsoft Windows / .NET runtime (in the 0.5 development branch)
Soon to be supported
- Solaris (in progress: http://bugzilla.gnome.org/show_bug.cgi?id=370081)
- MIPS (untested) (eg. wifi routers)
Users
A few projects bundle the source code for managed D-Bus with their applications. This kind of arrangement can work if you're on good terms with someone who can maintain dbus-sharp, but ideally you should depend on stable releases.
- NDesk component object model (NParts etc.)
- telepathy-sharp
- Tapioca VoIP and IM application development framework (tapioca-sharp)
- Landell VoIP and IM client using Gtk#
- Gnome NetworkManager binding
- Gnome Power Manager binding
- Banshee provides and uses a media player API, and uses Gnome Power Manager, Gnome NetworkManager, Helix, notify-sharp, org.gnome.SettingsDaemon
- Helix D-Bus for remote control of the media stream
- 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]
- Tomboy simple note taking application, for remote control and single-instance detection
- dcsharp file sharing client using the Direct Connect protocol, for notifications, single instance and remote control
- LAT LDAP Administration Tool
- VMX Manager, Virtual Machine Manager), GNOME CVS(?)
- NewStuffManager, a plugin update/download service
- last-exit, a music player for Last.fm
- Muine, a music player for GNOME
- The Fuzz, process security manager with GUI
- GShare, file sharing utility
- Chatter (Telepathy GnomeUI) VoIP and IM client using Gtk#
- Babuine TimeTracker
- gnome-keyring-sharp GNOME Keyring implementation, to get the keyring socket address
- eIDconfig-belgium configuration toolkit for the Belgian eID middleware
- PodSleuth iPod model information discovery/export tool, using hal-sharp
- Banter collaboration client (Telepathy)
- circ IRC client
- Beagle xesam-adapter desktop search API
Contact
Support can be found on the #managed-dbus IRC channel on irc.gnome.org
There is no mailing list or email contact address.
Bundling guidelines
"Bundling" involves including the sources for managed D-Bus in an application's source tree to avoid the external dependency.
- Make sure the AssemblyInfo.cs files are included in the build
- Make sure the libraries are not installed to the GAC
- Make sure you include the same source files as used by the official Makefile and exclude other source code files that are not part of the build (eg. IntrospectionSchemas.cs and others)
- Try to keep up to date with the latest stable releases -- stable releases contain minimal changes required to keep the libraries working well on a variety of ever-changing platforms
- Try to provide a configure option allowing the application to be build against versions of the library in the GAC instead of the bundled versions
Packaging guidelines
- Only package stable releases
- Name the packages along the lines of "ndesk-dbus" and "ndesk-dbus-glib" rather than "dbus-sharp" -- the source package name will soon be changed to reflect this
- If in doubt, follow the conventions set by the Debian packages
As a dependency
This documentation does not yet apply but will become relevant when the libraries become installable.
To determine CSFLAGS to pass to your C# compiler:
pkg-config --libs ndesk-dbus-1.0 ndesk-dbus-glib-1.0
or with gmcs:
gmcs -pkg:ndesk-dbus-1.0 -pkg:ndesk-dbus-glib-1.0 ...
To determine where .service files should be installed:
pkg-config --define-variable=prefix=$prefix --variable=session_bus_services_dir ndesk-dbus-1.0
or
pkg-config --define-variable=datadir=$datadir --variable=session_bus_services_dir ndesk-dbus-1.0
Download
See the managed D-Bus release archive.
0.4.x is the old stable branch, while 0.5.x is now the current stable branch and features improved performance, portability and thread safety work.
dbus-sharp-glib 0.3 is the current stable release for GLib integration.
There is an archive of release notes.
Development
See the development roadmap for a detailed list of remaining tasks.
git-clone git://git.ndesk.org/pub/scm/dbus-sharp
The dbus-sharp API is not stable. In particular, please don't check this into your cvs/svn repository or bundle it with your program. And don't even think about installing it in the user's GAC or packaging it for your distribution yet.
There is also a module which provides GLib integration as an optional extra: