Distributed Computing Environment


There seem to be two tendencies in the development of the Operating Systems:
  1. OSs are going to be more and more Object Oriented (in a very general sense).
  2. OSs are going to be more and more Distributed.
These features appear first as additional applications to the OS and becoming subsequently part of the OS itself. Let's mention several examples:
  1. nfs: Part of some OSs (Unix), additional application to others (MS). Brings distribution.
  2. afs: Additional application. Brings distribution.
  3. dfs: Application of dce; can be seen as part of OS where dce is such. Brings distribution.
  4. dce: Part of many OSs (Unix), additional application to others (MS). Brings distribution and limited object orientation.
  5. Corba: Additional application. Brings distribution and object orientation.
  6. OODB: Additional application. Brings limited distribution and limited object orientation.
  7. Java: Additional application, OSs based on Java as native language may appear soon. Brings distribution and object orientation.
  8. WWW: Additional applications, there are tries to make it part of OS (MS). Brings distribution, together with other applications (Java) also object orientation.
  9. NIS: Originally external application, now part of many OSs (Unix). Brings distribution.
There are many others (PVM, OLE/COM/DCOM,...).


DCE is one attempt to solve the problem of OS distributivness. It tries to implement the requirement, that user should see the whole network as one machine and should not care, where various resources (hardware as well as software) are.

DCE resources are principals. Almost anything, what exists in a computer, can be a principal: user, printer, process, machine, file,... There is ACL attached to each principal. Security is very strong point of DCE, which is natural thing coming from the fact that DCE is Internet-Wide OS. DFS is just one application using DCE (although probably the most important one nowadays).

As it is part of the OS (at least in the Unix world), it can be OO only to limited extend like the OS which carries it. It, however, satisfies several requirements usually laid on OO systems: It is fundamentally Client-Server environment and as such it allows encapsulation and polymorphism. In the version 1.2.2, DCE allows also passing of object reference and interface inheritance.

The support for C++ in the core DCE is very limited. In the version 1.2.2, C++ header files can be created from DCE idl files. There are applications allowing to use C++ in broader way: for example Objtran (from CityBank), DCE++ (from HAL Computer Systems) or OODCE (from HP) which may in future become part of the core distribution. Some applications allow creating DCE idl files from C++ header files.

DCE is part of all  important OS and is derived from the common source code, which is provided by the OSF and is free for non-for-profit organizations since version 1.2.2. The common source allows in principle to write easily portable code.



DCE & Corba DCE & Microsoft DCE & OODB DCE & Java

Simple Application in DCE

Suppose the end user writing her Application using directly Client Object and indirectly Server Object. Client Object may be local, Server Object remote (but user doesn't know that and that can be, in fact, even run-time decision). By including proper header files (in fact containing macros) and linking with proper libraries (maybe even shared ones), user may create program which will work like this:
  1. Application uses Client Object.
  2. Client Object decides to use remote Server Object.
  3. Client Object asks CDS (part of DCE) where is available suitable Server Objects. Server Object had to register itself via its Server before.
  4. Knowing the address of  Server Object, Client Object uses the chain Client Proxy Object - Stub - Runtime - Runtime - Stub - Server Proxy Object, which can then directly call Server Object itself. All chain components are either part of DCE environment or are created automatically when Client Object or Server Object is compiled.
Let's look now at the procedure of creating such kind of application. What is in red, should be written by the user, green parts either exist or are created automatically.
  1. User should define the interface of the Server she wants to use: idl file. It contains UUID unique identifier which identifies the running Server.
  2. idl compiler creates several header files *.h and libraries lib*.a.
  3. User should implement her client.c (nobody else can do it). She is using generated header files here.
  4. User (or another user) should also implement the Server part of application: the function.c, which does the required job and server.c, which organizes the Server process. Some example of "server.c" can be used as function itself is rather complicated (but only minor changes are needed to "server.c" to get server.c.
  5. Both client and server part of the application can now be compiled using generated libraries.
Let's see the example of very simple application, where Server adds two arrays supplied by Client. Green part is created automatically, pink text is reused from standard examples.

Possible Real Use of DCE

This is possible (although very naive) way of organizing the Reconstruction and Analyzing software using DCE:
  1. User runs only the front end (GUI, Event Display, Histogram Visualization,...) of the application on her computer.
  2. She may (or may not) use some Institute resources for more computing demanding tasks. Also necessary data may reside somewhere around.
  3. If any other results (objects) are needed, which are not available locally, they are localized somewhere on the network (possibly on some Regional Center). The place which is able to provide the results is asked to do so. It will do all necessary computing locally (remotely from the user point of view) and will send only necessary objects to the local Institute (and user).
All distributed computing is done automatically - user may not know about the fact, that her application runs on many machines around the Globe to fulfill her task. Any process can decide itself that it needs help and is able to localize possible helper (using DCE services).

Problems

Problems with the potential using of DCE can be divided into two categories:

See other sources of information about DCE.

J.Hrivnac, 7Oct97