Content deleted Content added
No edit summary |
m Removing link(s) Wikipedia:Articles for deletion/Distributed Ruby closed as delete (XFDcloser) |
||
(67 intermediate revisions by 55 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.
[[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>
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''.
* ''[[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.
* ''[[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.
▲See also [[Internet protocol suite]].
== Local vs. distributed objects ==
Local and distributed objects differ in many respects.<ref>W. Emmerich (2000) Engineering distributed objects, John Wiley & Sons Ltd.</ref><ref>Samuel C. Kendall, [[Jim Waldo]], Ann Wollrath, and Geoff Wyant. 1994. A Note on Distributed Computing. Technical Report. Sun Microsystems, Inc., Mountain View, CA, USA.</ref> Here are some of them:
# Life cycle : Creation, migration and deletion of distributed objects is different from local objects
# Reference : Remote references to distributed objects are more complex than simple pointers to memory addresses
# Request Latency : A distributed object request is orders of magnitude slower than local method invocation
# Object Activation : Distributed objects may not always be available to serve an object request at any point in time
# Parallelism : Distributed objects may be executed in parallel.
# Communication : There are different communication primitives available for distributed objects requests
# Failure : Distributed objects have far more points of failure than typical local objects.
# 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 used in [[Java RMI]].
[[CORBA]] lets
[[
[[DDObjects]] is a framework for distributed objects using Borland Delphi.
[[JavaSpaces]] is a Sun specification for a distributed, shared memory (space based)
[[
Distributed Ruby (DRb) is a framework for distributed objects using the [[Ruby programming language]].
==See also==
▲[[dRuby]] is a framework for distributed objects using [[Ruby programming language]].
*[[Fragmented object]]
*[[Distributed object communication]]
*[[Object request broker]]
==References==
{{reflist}}
[[Category:Distributed computing architecture]]
|