Articulo de referencia

Objeto distribuido

La imagen describe la comunicación entre objetos distribuidos que residen en diferentes máquinas. En computación distribuida , los objetos distribuidos son objetos (en el sentid...

La imagen describe la comunicación entre objetos distribuidos que residen en diferentes máquinas.

En computación distribuida , los objetos distribuidos son objetos (en el sentido de la programación orientada a objetos ) que se encuentran distribuidos en diferentes espacios de direcciones , ya sea en distintos procesos del mismo ordenador o en varios ordenadores conectados en red , pero que colaboran compartiendo datos e invocando métodos. Esto suele implicar transparencia de ubicación , donde los objetos remotos se comportan igual que los locales. El método principal de comunicación entre objetos distribuidos es la invocación remota de métodos , generalmente mediante el paso de mensajes: un objeto envía un mensaje a otro objeto en una máquina o proceso remoto para que realice alguna tarea. Los resultados se envían de vuelta al objeto que realizó la llamada.

Los objetos distribuidos fueron populares a finales de la década de 1990 y principios de la de 2000, pero desde entonces han caído en desuso. [ 1 ]

El término también puede referirse, en general, a una de las extensiones del concepto básico de objeto utilizado en el contexto de la computación distribuida, como los objetos replicados o los objetos distribuidos en tiempo real .

  • Los objetos replicados son grupos de componentes de software ( réplicas ) que ejecutan un protocolo distribuido multipartito para lograr un alto grado de coherencia entre sus estados internos y que responden a las solicitudes de forma coordinada. Referirse al grupo de réplicas como un solo objeto refleja que la interacción con cualquiera de ellas expone el mismo estado y comportamiento visibles externamente.
  • Los objetos distribuidos en vivo (o simplemente objetos en vivo ) [ 2 ] generalizan el concepto de objeto replicado a grupos de réplicas que internamente pueden usar cualquier protocolo distribuido, lo que podría resultar en una consistencia débil entre sus estados locales. Los objetos distribuidos en vivo también pueden definirse como instancias en ejecución de protocolos distribuidos multipartitos, vistos desde la perspectiva de la programación orientada a objetos como entidades que tienen una identidad distinta y que pueden encapsular estado y comportamiento distribuidos.

Véase también conjunto de protocolos de Internet .

Objetos locales frente a objetos distribuidos

Los objetos locales y distribuidos difieren en muchos aspectos. [ 3 ] [ 4 ] Aquí hay algunos de ellos:

  1. Ciclo de vida  : La creación, migración y eliminación de objetos distribuidos es diferente a la de los objetos locales.
  2. Referencia  : Las referencias remotas a objetos distribuidos son más complejas que simples punteros a direcciones de memoria.
  3. Latencia de la solicitud  : Una solicitud de objeto distribuido es órdenes de magnitud más lenta que la invocación de un método local.
  4. Activación de objetos  : Es posible que los objetos distribuidos no siempre estén disponibles para atender una solicitud de objeto en un momento dado.
  5. Paralelismo  : Los objetos distribuidos pueden ejecutarse en paralelo.
  6. Comunicación  : Existen diferentes primitivas de comunicación disponibles para las solicitudes de objetos distribuidos.
  7. Fallo  : Los objetos distribuidos tienen muchos más puntos de fallo que los objetos locales típicos.
  8. Seguridad  : Su distribución los hace vulnerables a los ataques.

Ejemplos

Las funcionalidades RPC del protocolo de serialización multiplataforma Cap'n Proto equivalen a un protocolo de objetos distribuidos. Las llamadas a métodos de objetos distribuidos pueden ejecutarse (encadenadas, en una única solicitud de red, si es necesario) a través de referencias/ capacidades de interfaz . [ 5 ]

Los objetos distribuidos se implementan en Objective-C utilizando la API de Cocoa con la clase NSConnection y los objetos de soporte.

Los objetos distribuidos se utilizan en Java RMI .

CORBA permite construir sistemas distribuidos de objetos mixtos.

DCOM es un marco de trabajo para objetos distribuidos en la plataforma de Microsoft.

DDObjects es un marco de trabajo para objetos distribuidos que utiliza Borland Delphi.

Jt es un marco de trabajo para componentes distribuidos que utiliza un paradigma de mensajería.

JavaSpaces es una especificación de Sun para una memoria distribuida y compartida (basada en espacio).

Pyro es un framework para objetos distribuidos que utiliza el lenguaje de programación Python .

Distributed Ruby (DRb) es un marco de trabajo para objetos distribuidos que utiliza el lenguaje de programación Ruby .

Véase también

Referencias

  1. Microservicios y la primera ley de los objetos distribuidos , Martin Fowler, 13 de agosto de 2014
  2. Ostrowski, K., Birman, K., Dolev, D., y Ahnn, J. (2008). "Programación con objetos distribuidos en vivo", Actas de la 22.ª Conferencia Europea sobre Programación Orientada a Objetos , Pafos, Chipre, 7-11 de julio de 2008, J. Vitek, Ed., Lecture Notes in Computer Science , vol. 5142, Springer-Verlag, Berlín, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  3. W. Emmerich (2000) Ingeniería de objetos distribuidos, John Wiley & Sons Ltd.
  4. Samuel C. Kendall, Jim Waldo , Ann Wollrath y Geoff Wyant. 1994. Una nota sobre computación distribuida. Informe técnico. Sun Microsystems, Inc., Mountain View, CA, EE. UU.
  5. "Cap'n Proto: Protocolo RPC" .