DBusSharp
From NDesk
Revision as of 05:10, 29 January 2009 (edit) Alp (Talk | contribs) m ← Previous diff |
Revision as of 00:24, 30 January 2009 (edit) (undo) Alp (Talk | contribs) (Add link to new docs) Next diff → |
||
Line 91: | Line 91: | ||
=== Documentation === | === Documentation === | ||
- | Managed D-Bus exports and imports objects implementing interfaces marked with the NDesk.DBus.Interface attribute. This allows developers to either extend existing code with inter-process and network transparency or develop new code to proxy the state of the application. [http://git.ndesk.org/?p=dbus-sharp;a=blob;f=examples/TestExportInterface.cs TestExportInterface.cs] provides examples of exported and imported interfaces, methods and properties. [http://git.ndesk.org/?p=dbus-sharp-glib;a=blob;f=examples/TestUI.cs TestUI.cs] demonstrates how the additional NDesk.DBus.GLib library can be used to provide main loop integration with GLib and GTK+ applications. Main loop integration is essential for anything but the simplest uses of D-Bus. Alternatively, message processing can be driven using NDesk.DBus.Connection.Iterate () and related methods. | + | See the [[DBus_Documentation|NDesk.DBus documentation]] for a brief developers guide. |
- | + | ||
- | NDesk.DBus maps all primitive CLR types as well as generic Dictionary<Key,Value>, List<T> and Array types and structs to their equivalent D-Bus types, while primitives boxed in System.Object are mapped to D-Bus variants. Managed events are mapped to D-Bus signals (keep in mind that the event delegate type's parameters must correspond directly to the D-Bus signal -- EventArgs parameters are not supported). All of these mappings are transparent and fully interoperable with other languages and platforms implementing the D-Bus specification. | + | |
=== Contact === | === Contact === |
Revision as of 00:24, 30 January 2009
ndesk-dbus is a C# implementation of D-Bus. It's often referred to as dbus-sharp, or "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
- MIPS (untested) (eg. wifi routers) -- pending JIT fix
Users
This is a list of applications known to make use of managed D-Bus:
- 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 SVN(?)
- Capuchin (formerly 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
- D-Bus Explorer
- GNOME Do
- Nemo file manager, for Tracker
- Blam RSS aggregator
- MonoTorrent / Monsoon BitTorrent client
Documentation
See the NDesk.DBus documentation for a brief developers guide.
Contact
Support can be found on the #managed-dbus IRC channel on irc.gnome.org
Download
See the managed D-Bus release archive.
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 now fairly stable stable. It's best to install a released version and depend on it from your application rather than bundling the sources directly as has been done in the past.
There is also a module which provides GLib integration as an optional extra:
git-clone git://git.ndesk.org/pub/scm/dbus-sharp-glib
Exposition
- GNOME Boston Summit 2006, MIT Media Lab, Aaron Bockover
- GUADEC 2007 Birmingham, UCE Conservatoire, Alp Toker (view slides)