Objeto distribuido

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

En computación distribuida , los objetos distribuidos [ cita requerida ] son ​​objetos (en el sentido de programación orientada a objetos ) que se distribuyen en diferentes espacios de direcciones , ya sea en diferentes procesos en la misma computadora, o incluso en múltiples computadoras conectadas a través de una red , pero que trabajan juntos compartiendo datos e invocando métodos. Esto a menudo implica transparencia de ubicación , donde los objetos remotos aparecen iguales que los objetos locales. El método principal de comunicación de objetos distribuidos es con invocación de método remoto , generalmente mediante paso de mensajes: un objeto envía un mensaje a otro objeto en una máquina o proceso remoto para realizar alguna tarea. Los resultados se envían de vuelta al objeto que realiza la llamada.

Los objetos distribuidos fueron populares a finales de la década de 1990 y principios de la década 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 de objeto básico utilizado en el contexto de la computación distribuida, como objetos replicados u objetos distribuidos en vivo .

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

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

Objetos locales vs. distribuidos

Los objetos locales y distribuidos difieren en muchos aspectos. [3] [4] A continuación se muestran 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 los simples punteros a direcciones de memoria.
  3. Latencia de 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 cualquier momento.
  5. Paralelismo: Los objetos distribuidos pueden ejecutarse en paralelo.
  6. Comunicación: Hay diferentes primitivas de comunicación disponibles para solicitudes de objetos distribuidos.
  7. Error: los objetos distribuidos tienen muchos más puntos de error que los objetos locales típicos.
  8. Seguridad: La distribución los hace vulnerables a ataques.

Ejemplos

Las facilidades 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 se pueden ejecutar (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.

En Java RMI se utilizan objetos distribuidos .

CORBA permite construir sistemas distribuidos de objetos mixtos.

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

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

Jt es un marco 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 el espacio)

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

Distributed Ruby (DRb) es un marco 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 , Paphos, 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. ^ "Capitán Proto: Protocolo RPC".
Obtenido de "https://es.wikipedia.org/w/index.php?title=Objeto_distribuido&oldid=1237343207"