Main Page DBusSharp

From NDesk

(Difference between revisions)
Jump to: navigation, search
Revision as of 01:58, 25 September 2006 (edit)
Alp (Talk | contribs)

← Previous diff
Revision as of 14:25, 27 September 2006 (edit) (undo)
Alp (Talk | contribs)

Next diff →
Line 53: Line 53:
* Full Exception support (maybe including some amount of stack trace based on contract, if this is desirable) * Full Exception support (maybe including some amount of stack trace based on contract, if this is desirable)
* Non-native endian message support * Non-native endian message support
 +* Generic List support
* Build system, versioning and packaging considerations * Build system, versioning and packaging considerations
* Old Mono compatibility layer to replace broken unix sockets on pre-1.1.17 releases * Old Mono compatibility layer to replace broken unix sockets on pre-1.1.17 releases

Revision as of 14:25, 27 September 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 currently at an early stage of development and not recommended for use in stable applications.

However it is hoped that it will soon provide 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 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.


Current work

Now completed:

  • Introspection support (export only)
  • 64-bit (AMD64)
  • Big endian (PPC)
  • Old (pre-1.1.17) Mono compatibility

Tasks remaining

Updated Sunday September '22 2006

Tasks towards a pre-1.0 preview release

  • Marshal ObjectPath etc. as a live instance
  • Fix remaining obscure object mapping and transport bugs
  • Finalize public API with input from .NET remoting and D-Bus experts
  • Run final API through fxcop, gendarme etc.
  • Complete GLib main loop integration API

Tasks towards a 1.0 release

  • Full thread safety (dbus-sharp was designed for thread safety but some strategic locks have still to be added and it would be better to get this right than to rush it)
  • Full Exception support (maybe including some amount of stack trace based on contract, if this is desirable)
  • Non-native endian message support
  • Generic List support
  • Build system, versioning and packaging considerations
  • Old Mono compatibility layer to replace broken unix sockets on pre-1.1.17 releases
  • Optimize low hanging fruit like marshaling arrays and collections of primitives
  • Optimize marshaling of entirely blittable structures
  • Built-in non-unix transports (tcp etc.)
  • Dynamic type casting and interface implementation
  • More?

Tasks for 1.1

  • Optimize marshaling of structures which are partially blittable
  • Clever optimizations (scatter gather IO etc.)
  • Customizable object mapping based on constraints and a regular-expression style mapper

1.1 and beyond

  • Complete message filter engine
  • Daemon
  • Integration with other message bus systems
  • IronPython API to implement current dbus-python API with managed D-Bus
  • cilc GObject interface and proxy generator

Protocol Extensions

dbus-sharp embraces the D-Bus specification and extends it with certain optional additions to the D-Bus protocol. These are ifdef'd:

PROTO_REPLY_SIGNATURE

The signature of the MethodReply expected by a MethodCall. This is implemented as a header field TypeCode: FieldCode.ReplySignature.

Can be enabled without breaking existing libdbus consumers.

Note: This may soon be renamed to FieldCode.RequestSignature to mirror FieldCode.ReplySerial.

PROTO_TYPE_SINGLE

A single precision floating point type defined by the type code 'f'.

Will not work with current libdbus dbus-daemon. Not currently usable.

Users

Even though this software is not yet released, developers of a few applications have decided to ignore the warnings and (correctly) bundle it or depend on it directly as a moving target. This kind of arrangement can work if you're on good terms with someone who can maintain dbus-sharp, but ideally you should wait for a stable release.

  • 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 and Gnome NetworkManager

Download

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

There are no releases yet, and the 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"