|This article's factual accuracy may be compromised due to out-of-date information. (January 2012)|
Desktop COmmunication Protocol (DCOP) was a light-weight interprocess and software componentry communication system. The design goal for the system was to allow applications to interoperate, and share complex tasks. Essentially, DCOP was a ‘remote control’ system, which allowed applications or scripts to enlist the help of other applications. It was built on top of the X Window System’s Inter-Client Exchange protocol.
The use of DCOP provides extensive new capabilities, without requiring entirely new applications to be written, as might otherwise be the case. KDE applications and the KDE libraries did make heavy use of DCOP and most of the KDE applications can be controlled by scripts via the DCOP mechanism. DCOP was replaced by D-Bus in KDE Software Compilation 4.
There is a command-line tool called ‘dcop’ (note the lower-case letters) that can be used for communication with the applications from the shell. ‘kdcop’ is a GUI tool to explore the interfaces of an application.
The model is simple. Each application using DCOP is a client. They communicate to each other through a DCOP server, which functions like a traffic director, dispatching messages/calls to the proper destinations. All clients are peers of each other.
Two types of actions are possible with DCOP: "send and forget" messages, which do not block, and "calls," which block waiting for some data to be returned.
Any data that will be sent is serialized (also referred to as marshalling in CORBA speak) using the built-in QDataStream operators available in all of the Qt classes. There is also a simple IDL-like compiler available (dcopidl and dcopidl2cpp) that generates stubs and skeletons. Using the dcopidl compiler has the additional benefit of type safety.
DCOP continues to be used by the Trinity Desktop Environment.
- D-Bus - Desktop Bus
- Portable object cross-language cross-platform Object Model definition
- CORBA Common Object Request Broker Architecture, cross-language cross-platform object model
- Freedesktop.org D-Bus current open cross-language cross-platform Object Model
- GNOME Bonobo deprecated GNOME cross-language Object Model
- KDE KPart KDE component framework
- XPCOM Mozilla applications cross-platform Component Object Model
- COM Microsoft Windows only cross-language Object Model
- DCOM Distributed COM, extension making COM able to work in networks
- Common Language Infrastructure current .NET cross-language cross-platform Object Model
- IBM System Object Model SOM, a component system from IBM used in OS/2
- Java Beans
- Java Remote Method Invocation (Java RMI)
- Internet Communications Engine
- Language binding
- Foreign function interface
- Calling convention
- Name mangling
- Application programming interface - API
- Application Binary Interface - ABI
- Comparison of application virtual machines
- SWIG opens ource automatic interfaces bindings generator from many languages to many languages