PreviousNext

What is an Object?

Network operations are like grammatical sentences: they must have a subject (the client performing some operation), a predicate (the operation itself), and an object (the "thing" on which the operation is performed). Although meaningful sentences can sometimes omit some of its grammatical elements, a network operation must always have all three of its elements.

In any application, distributed or not, an object is any externally accessible resource which is under the application's control. Objects can be anything: printers, files, other machines, data - it all depends on the application. What these things have in common is that they must be accessed through the application itself. Entities in a distributed application request the use of these resources, via clients, from the application server; and the server normally decides whether or not to grant use of a resource to an entity by examining the object's ACLs.

The object can have an existence quite independent of the application that manages it. On the other hand, the state information associated with the object, which the application must have access to in order to manage the object in a reasonable way, is maintained by the application and is useful only to it. This information is stored in a backing store database, where each separate record normally contains the state information for a single object. An object's ACLs qualify as state information for the purposes of this discussion.

In the sample application, the objects' state information is practically identical to the objects themselves, since the latter seem not to exist at all except as the information stored in the backing databases. However, this is only partly true. The sample_object object is indeed a dummy and exists only as a pretext for showing how ACLs on objects are set up and manipulated. The server management object (server_mgmt), however, is different: it really has a purpose, although it is an abstraction (that is, access to an interface). It is used whenever a client attempts to execute a remote management operation on the server. In the sample application this happens when the client is invoked with the "kill" option.