Content deleted Content added
added Local vs Distributed Objects |
m Removing link(s) Wikipedia:Articles for deletion/Distributed Ruby closed as delete (XFDcloser) |
||
(62 intermediate revisions by 50 users not shown) | |||
Line 1:
{{Short description|Concept in distributed computing}}
[[File:Distributed object communication.png|thumb|Image describes communication between distributed objects residing in different machines.]]
In [[distributed computing]], '''distributed objects'''{{citation needed|date=May 2016}} are objects (in the sense of [[object-oriented programming]]) that are distributed across different [[address space]]s, either in different [[Process (computing)|processes]] on the same computer, or even in multiple [[computer]]s connected via a [[Computer network|network]], but which work together by sharing data and invoking methods. This often involves [[___location transparency]], where remote objects appear the same as local objects. The main method of [[distributed object communication]] is with [[remote method invocation]], generally by message-passing: one object sends a message to another object in a remote machine or process to perform some task. The results are sent back to the calling object.
See also [[Internet protocol suite]].▼
Distributed objects were popular in the late 1990s and early 2000s, but have since fallen out of favor.<ref>[http://martinfowler.com/articles/distributed-objects-microservices.html Microservices and the First Law of Distributed Objects], Martin Fowler, 13 August 2014</ref>
== Local vs Distributed Objects == ▼
The term may also generally refer to one of the extensions of the basic [[object (computer science)|object]] concept used in the context of distributed computing, such as ''replicated objects'' or ''live distributed objects''.
Local and distributed objects differs in many dimentions<ref>W. Emmerich (2000) Engineering distributed objects, John Wiley & Sons Ltd.</ref> here is some of them:▼
* ''[[replication (computer science)|Replicated objects]]'' are groups of software components (''replicas'') that run a distributed multi-party protocol to achieve a high degree of consistency between their internal states, and that respond to requests in a coordinated manner. Referring to the group of replicas jointly as an ''object'' reflects the fact that interacting with any of them exposes the same externally visible state and behavior.
# Life cycle : Creation, migration and deletion of distributed objects is different from local objects.▼
* ''[[Live distributed object]]s'' (or simply ''[[live distributed object|live objects]]'')<ref>Ostrowski, K., Birman, K., Dolev, D., and Ahnn, J. (2008). "Programming with Live Distributed Objects", ''Proceedings of the 22nd European Conference on Object-Oriented Programming'', Paphos, Cyprus, July 07–11, 2008, J. Vitek, Ed., ''Lecture Notes in Computer Science'', vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.</ref> generalize the ''replicated object'' concept to groups of replicas that might internally use any distributed protocol, perhaps resulting in only a weak consistency between their local states. Live distributed objects can also be defined as running instances of distributed multi-party protocols, viewed from the object-oriented perspective as entities that have a distinct identity, and that can encapsulate distributed state and behavior.
# Reference : Objets reference of distributed objetcs are more complex than simple pointer to memory adress.▼
# Request Latency : A distributed objects request is orders of maginitude slower than local method invocation.▼
# Object Activation : Distributed objects may not always be advailable to serve and object request at any point in time.▼
# Parallelism : Distributed object may be executed in parallel.▼
# Communication : there are different communication primitive available for distributed objects requests.▼
# Failure : Distributed object have a lot more point of failure than typical local objects▼
▲See also [[Internet protocol suite]].
▲Local and distributed objects
▲# Life cycle : Creation, migration and deletion of distributed objects is different from local objects
▲# Reference :
▲# Request Latency : A distributed
▲# Object Activation : Distributed objects may not always be
▲# Communication :
▲# Failure : Distributed
# Security : Distribution makes them vulnerable to attack.
== Examples ==
The RPC facilities of the cross platform serialization protocol, [[Cap'n Proto]] amount to a distributed object protocol. Distributed object method calls can be executed (chained, in a single network request, if needs be) through interface references/[[Capability-based security|capabilities]].<ref>{{Cite web|url=https://kentonv.github.io/capnproto/rpc.html|title = Cap'n Proto: RPC Protocol}}</ref>
Distributed objects are implemented in [[Objective-C]] using the [[Cocoa (API) | Cocoa API]] with the NSConnection class and supporting objects.▼
▲Distributed objects are implemented in [[Objective-C]] using the [[Cocoa (API)
Distributed objects are used in [[Java RMI]].
Line 24 ⟶ 33:
[[CORBA]] lets one build distributed mixed object systems.
[[
[[DDObjects]] is a framework for distributed objects using Borland Delphi.
[[JavaSpaces]] is a Sun specification for a distributed, shared memory (space based)
[[PYthon Remote Objects|Pyro]] is a framework for distributed objects using the [[Python (programming language)|Python programming language]].
==See also==
*[[Fragmented object]]
*[[Distributed object communication]]
*[[Object request broker]]
==References==
{{reflist}}
[[Category:Distributed computing architecture]]
|