Heterogeneous computer networks are networks where dissimilar computer systems are inter-linked to provide a range of services. For example, the network represented by the world wide web is composed of many different computer types which utilize many different types of operating systems and many different communication protocols. There are, not unexpectedly, complex problems which must be resolved when groups of dissimilar computers are linked in a heterogeneous network. Many of these problems result from the difficulty which is associated with the design and implementation of standardized interfaces which allow software processes to share data and information between dissimilar computer systems.
Distributed object computing is a method for providing standardized interfaces between the computers of a heterogeneous network. The interfaces define ways in which software processes may communicate to share information and services with other software processes executing on remote computer systems. To provide this type of functionality, distributed object computing borrows many of the fundamental ideas of object oriented programming, or "OOP", and applies them to the problems of computer networking.
For a distributed object computing system, a programmer defines services and information in terms of objects. Objects are collections of data elements and associated methods, or procedures, for manipulating the data elements. Typically, some or all of the data elements within an object will be "private" meaning that they may only be manipulated using the methods defined for the object. In this way, objects are a convenient tool for defining data types and providing an interface for manipulating the data types. Distributed object computing systems utilize this methodology by defining information and services available on a computer network in terms of objects. When a client system needs access to a particular service, it manipulates an object associated with that service by performing what is know as an "object call." The object call is transmitted to the server that implements the methods associated with the called object. The server then carries out the requested operation and returns the operation's result.
In all computer networks, there is a great deal of shared information which is generally stored in a multitude of locations within the network. For example, a great deal of shared information exists which describes the configuration of the network and the various systems within the network. Increasingly, it has been found to be advantageous to store this information in one or more common repositories. For example, passwords, which, in the past, might have been stored in numerous files on numerous systems, are now increasingly stored in a networked database accessible to all computer systems on a single network.
Unfortunately, practice has demonstrated that the task of providing a networked database system involves much more than simply moving all such data to a centralized location. For example, it is clearly the case that, to be effective, a networked database much provide some type of organization. Generally, this involves the ability to group similar data logically and to provide a simplified mechanism for retrieving information based on this logical grouping. Networked databases must also be able to provide rapid access to their underlying data. As an example, in a distributed object computing system, it may be desirable to use a networked database as a means for maintaining information which maps names to actual objects. Systems which need to access an object would find the object, using the object's name, in the networked database. If this operation were time consuming, the efficiency of the entire network would suffer.
It is also the case that an effective networked database must provide some type of revision control. This follows from the observation that not all information within a networked database will be applicable or appropriate for all systems within a single computer network. For example, computers within a single network may utilize different versions of the same software package. As a result, it is important that a networked configuration database be able to supply appropriate revisions to individual systems. Ideally, this versioning ability should be both referential (i.e. it should provide for the inspection of older versions) and restorative (the ability to retrieve older versions should be provided).
Finally, in a distributed object computing system, an effective networked database must provide the type of interface which is expected for all services within the network. Namely, the networked database must provide an object oriented interface.