The Distributed Computing Environment (DCE) is a software system developed in the early 1990s from the work of the Open Software Foundation (OSF), a consortium founded in 1988 that included Apollo Computer (part of Hewlett-Packard from 1989), IBM, Digital Equipment Corporation, and others. The DCE supplies a framework and a toolkit for developing client/server applications. The framework includes:

  • a remote procedure call (RPC) mechanism

The DCE system was, to a large degree, based on independent developments made by each of the partners. DCE/RPC was derived from the Network Computing System (NCS) created at Apollo Computer. The naming service was derived from work done at Digital. DCE/DFS was based on the Andrew File System (AFS) originally developed at Carnegie Mellon University. The authentication system was based on Kerberos. By combining these features, DCE offers a fairly complete system for network computing. Any machine on the network can authenticate its users, gain access to resources, and call them remotely using a single integrated API.

The rise of the Internet, Java and web services stole much of DCE's mindshare through the mid-to-late 1990s, and competing systems such as CORBA appeared as well.

One of the major uses of DCE today is Microsoft's DCOM and ODBC systems, which use DCE/RPC (in MSRPC) as their network transport layer.

OSF and its projects eventually became part of The Open Group, which released DCE 1.2.2 under a free software license (the LGPL) on 12 January 2005.

DCE 1.1 was available much earlier under the OSF BSD license, and resulted in FreeDCE being available since 2000. FreeDCE contains an implementation of DCOM.

One of the major systems built on top of DCE was Encina, developed by Transarc (later acquired by IBM). IBM used Encina as a foundation to port its primary mainframe transaction processing system (CICS) to non-mainframe platforms, as IBM TXSeries. (However, later versions of TXSeries have removed the Encina component.)

Architecture

DCE is intended to support high availability systems: when a server does not respond (because of server failure or communications failure), clients can be constructed to automatically use a replica of that server instead.