Live distributed object: Difference between revisions

Content deleted Content added
Aasasd (talk | contribs)
No edit summary
Line 13:
* '''Interfaces''' ('''endpoints'''). The ''interface'' of a live distributed object is defined by the types of interfaces exposed by its proxies; these may include event channels and various types of graphical user interfaces. Interfaces exposed by the proxies are referred to as the live distributed object's ''endpoints''. The term ''endpoint instance'' refers to a single specific event channel or user interface exposed by a single specific proxy. To say that a live object ''exposes'' a certain endpoint means that each of its proxies exposes an instance of this endpoint to its local environment, and each of the endpoint instances carries events of the same types (or binds to the same type of a graphical display).
 
* '''References'''. The ''reference'' to a live object is a complete set of [[serialization|serialized]], portable instructions for constructing its proxy. To ''dereference'' a reference means to locally parse and follow these instructions on a particular computer, to produce a running proxy of the live object. Defined this way, a live object reference plays the same role as a Java [[Reference (computer science)|reference]], a C/C++ [[Pointer (computer programming)|pointer]], or a [[web service]]'s [[Web Services Description Language|WSDL]] description; it contains a complete information sufficient to ''locate'' the given object and interact with it. Since live distributed objects may not reside in any particular place (but rather span across a dynamically changing set of computers), the information contained in a live distributed object's reference cannot be limited to just an address. If the object is identified by some sort of a goballyglobally unique identifier (as might be the case for publish-subscribe topics or multicast groups), the reference must specify how this identifier is resolved, by recursively embedding a reference to the appropriate [[Name resolution (programming languages)|name resolution]] object.
 
* '''Types'''. The ''type'' of a live distributed object determines the patterns of external interactions with the object; it is determined by the types of endpoints and graphical user interfaces exposed by the object's proxies, and the patterns of events that may occur at the endpoints. The constraints that the object's type places on event patterns may span across the network. For example, type ''atomic multicast'' might specify that if an event of the form ''deliver(x)'' is generated by one proxy, a similar event must be eventually generated by all ''non-faulty'' proxies (proxies that run on computers that never crash, and that never cease to execute or are excluded from the protocol; the precise definition might vary). Much as it is the case for types in [[Java (programming language)|Java]]-like languages, there might exist many very different implementations of the same type. Thus, for example, behavior characteristic to ''atomic multicast'' might be exhibited by instances of distributed protocols such as virtual synchrony or Paxos.