DCE/RPC
From Wikipedia, the free encyclopedia
DCE/RPC stands for "Distributed Computing Environment / Remote Procedure Calls".
Note that DCE/RPC should not be confused with just DCE which is a suite of DCE/RPC services that provide, amongst other things, CDS and DFS.
DCE/RPC was commissioned by the Open Software Foundation in a "Request for Technology". One of the key companies that contributed was Apollo, who brought in NCA - "Network Computing Architecture" which became Network Computing System (NCS) and then a major part of DCE/RPC itself. The naming convention for transports that can be designed (as architectural plugins) and then made available to DCE/RPC echoes these origins, e.g. ncacn_np (SMB Named Pipes transport); ncacn_tcp (DCE/RPC over TCP/IP) and ncacn_http to name a small number.
DCE/RPC's history is such that it's sometimes cited as an example of design by committee. It is also frequently noted for its complexity, however this complexity is often a result of features that target large distributed systems and which are often unmatched by more modern RPC implementations such as SOAP.
DCE/RPC's reference implementation (version 1.1) is available under the BSD-compatible (Free Software) OSF/1.0 license, and is available for at least Solaris, AIX and VMS.
[edit] Uses
It is used in the UK's National Insurance Database.
It is used in Pennsylvania State University's student information portal, eLion
[edit] Alternate versions and implementations
FreeDCE is the DCE 1.1 reference implementation ported to Linux, has support for AMD64, and is autoconf'd to make porting to further platforms much easier: a Win32 port is underway.
Entegrity Solutions licensed the OSF's entire DCE 1.2.2 source code and ported it to Win32, creating a product called PC/DCE - see http://support.entegrity.com/private/pcdce32.asp
Microsoft's version of DCE/RPC, called "MSRPC", is integrated into Windows NT. MSRPC is derived from the DCE 1.1 reference implementation.
Samba contains an implementation of MSRPC that is intended to be network-interoperable and IDL-interoperable with MSRPC. It is not binary-interoperable with MSRPC.
The Wine Project contains an implementation of MSRPC that is intended to be binary-interoperable and IDL-interoperable with MSRPC. It is not network-interoperable with MSRPC.
At the time of writing, neither the Wine project nor the Samba project utilise any of the code from the OSF reference implementation, despite the Free Software licenses being entirely compatible.
There also appears to be a DCE/RPC interoperable implementation in java - http://jarapac.sourceforge.net/