Main Page DBusSharp

From NDesk

(Difference between revisions)
Jump to: navigation, search
Revision as of 23:08, 21 November 2006 (edit)
Alp (Talk | contribs)

← Previous diff
Revision as of 11:22, 22 November 2006 (edit) (undo)
Alp (Talk | contribs)

Next diff →
Line 80: Line 80:
=== Download === === Download ===
 +
 +See the [http://www.ndesk.org/archive/dbus-sharp/ managed D-Bus source code archive].
 +
 +==== Latest: 0.2 ====
 +
 +[http://www.ndesk.org/archive/dbus-sharp/dbus-sharp-0.2.tar.gz dbus-sharp-0.2.tar.gz]
 +
 +Support was added for reading non-native endian messages. ObjectPaths and Signatures were made more robust and several exception messages were improved. A complete list of changes is available in the version control system. There have been no changes in the high-level or the low-level public API in this release. dbus-sharp-glib remains stable at version 0.1.
==== 0.1 ==== ==== 0.1 ====
-Version 0.1 is out: [http://www.ndesk.org/archive/dbus-sharp/ http://www.ndesk.org/archive/dbus-sharp/]+[http://www.ndesk.org/archive/dbus-sharp/dbus-sharp-0.1.tar.gz dbus-sharp-0.1.tar.gz]
This is an ''emergency release'' to provide a working alternative for applications stuck with the unmaintained dbus-sharp binding for libdbus. The API/ABI may change in future releases, and it hasn't been audited for security, which means that it shouldn't be used to provide services to an untrusted audience over TCP. However, a number of applications are successfully using this code base already. Event handlers must be manually removed (foo.MyEvent -= HandleMyEvent;) to avoid flooding the daemon with match rules. MarshalByRefObject may not be supported in future releases, so you should stick to using interfaces to define dbus API. Exceptions are not consistently mapped but should work both in exported and imported API. This is an ''emergency release'' to provide a working alternative for applications stuck with the unmaintained dbus-sharp binding for libdbus. The API/ABI may change in future releases, and it hasn't been audited for security, which means that it shouldn't be used to provide services to an untrusted audience over TCP. However, a number of applications are successfully using this code base already. Event handlers must be manually removed (foo.MyEvent -= HandleMyEvent;) to avoid flooding the daemon with match rules. MarshalByRefObject may not be supported in future releases, so you should stick to using interfaces to define dbus API. Exceptions are not consistently mapped but should work both in exported and imported API.

Revision as of 11:22, 22 November 2006

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)
  • Mono 1.1.13 to 1.1.18 and newer
  • GNU/Linux
  • FreeBSD (currently limited to peer-to-peer connections)

Soon to be supported

Untested platforms

Managed D-Bus should work on these platforms but no testing has been done yet due to lack of hardware, or due to the unavailability of a libdbus port:

  • Mac OS X
  • Microsoft Windows / .NET runtime

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#
  • 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]
  • Tomboy simple note taking application, for remote control and single-instance detection

Contact

Support can be found on the #managed-dbus IRC channel on irc.gnome.org

There is no mailing list or email contact address.

Packaging and API stability

Packagers are advised not to install this library in the user's GAC (Global Assembly Cache). This is because, while the high-level object mapping API is fairly stable, much of the low-level API is likely to change between releases.

This isn't an ideal arrangement, but as long as applications stick to the high-level API and avoid classes like MessageReader/MessageWriter and obscure methods on Connection, and don't attempt to use or write custom Transports, there shouldn't be an issue.

This advice may change as the API stabilises, if the low-level and high-level API are split into their own assemblies, or if the low-level API is made internal.

Download

See the managed D-Bus source code archive.

Latest: 0.2

dbus-sharp-0.2.tar.gz

Support was added for reading non-native endian messages. ObjectPaths and Signatures were made more robust and several exception messages were improved. A complete list of changes is available in the version control system. There have been no changes in the high-level or the low-level public API in this release. dbus-sharp-glib remains stable at version 0.1.

0.1

dbus-sharp-0.1.tar.gz

This is an emergency release to provide a working alternative for applications stuck with the unmaintained dbus-sharp binding for libdbus. The API/ABI may change in future releases, and it hasn't been audited for security, which means that it shouldn't be used to provide services to an untrusted audience over TCP. However, a number of applications are successfully using this code base already. Event handlers must be manually removed (foo.MyEvent -= HandleMyEvent;) to avoid flooding the daemon with match rules. MarshalByRefObject may not be supported in future releases, so you should stick to using interfaces to define dbus API. Exceptions are not consistently mapped but should work both in exported and imported API.

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:

git-clone git://git.ndesk.org/pub/scm/dbus-sharp-glib

Retrieved from "http://ndesk.org/DBusSharp"