Content deleted Content added
No edit summary |
keep the first section/ article lead short ==Key Concepts== separated Tags: Mobile edit Mobile web edit |
||
Line 1:
[[Image:Definition of a Live Distributed Object.gif|right|thumbnail|300 px|An illustration of the basic concepts involved in the definition of a live distributed object.]]
'''Live distributed object''' (also abbreviated as ''live object'') refers to a running instance of a [[distributed computing|distributed]] multi-party (or [[peer-to-peer]]) [[protocol (computing)|protocol]], viewed from the [[object-oriented programming|object-oriented]] perspective, as an entity that has a distinct [[identity (object-oriented programming)|identity]], may [[Encapsulation (computer science)|encapsulate]] internal [[State (computer science)|state]] and [[Thread (computer science)|threads of execution]], and that exhibits a well-defined externally visible behavior.
==Key Concepts== The key [[programming language]] concepts, as applied to live distributed objects, are defined as follows * '''Identity'''. The ''identity'' of a live distributed object is determined by the same factors that differentiate between instances of the same distributed protocol. The object consists of a group of software components physically executing on some set of physical machines and engaged in mutual communication, each executing the distributed protocol code with the same set of essential parameters, such as the name of a multicast group, the identifier of a publish-subscribe topic, the identity of a membership service, etc. Thus, for example, [[publish-subscribe]] channels and [[multicast group]]s are examples of live distributed objects: for each channel or group, there exists a single instance of a distributed protocol running among all computers sending, forwarding, or receiving the data published in the channel or multicast within the group. In this case, the object's identity is determined by the identifier of the channel or group, qualified with the identity of the distributed system that provides, controls, and manages the given channel or group. In the case of multicast, the identity of the system might be determined, for example, by the address of the ''membership service'' (the entity that manages the membership of the multicast group).
Line 16 ⟶ 19:
* '''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.
The semantics and behavior of live distributed objects can be characterized in terms of [[distributed data flow]]s; the set of messages or events that appear on the instances of a live object's endpoint forms a distributed data flow
|