En un entorno informático distribuido , la comunicación de objetos distribuidos realiza la comunicación entre objetos distribuidos . La función principal es permitir que los objetos accedan a datos e invoquen métodos en objetos remotos (objetos que residen en un espacio de memoria no local ). La invocación de un método en un objeto remoto se conoce como invocación de método remoto ( RMI ) o invocación remota , y es la programación orientada a objetos análoga a una llamada a procedimiento remoto (RPC).
El enfoque ampliamente utilizado sobre cómo implementar el canal de comunicación se realiza mediante el uso de stubs y esqueletos . Son objetos generados cuya estructura y comportamiento dependen del protocolo de comunicación elegido, pero en general proporcionan una funcionalidad adicional que garantiza una comunicación confiable a través de la red.
En RMI, el programador define un stub (que es el bit en el cliente) como una interfaz . El rmic (compilador rmi) usa esto para crear el código auxiliar de clase. El código auxiliar realiza la verificación de tipos. El esqueleto se define en una clase que implementa el código auxiliar de interfaz. [1]
Cuando una persona que llama quiere realizar una llamada remota al objeto llamado, delega las solicitudes a su código auxiliar , que inicia la comunicación con el esqueleto remoto . En consecuencia, el código auxiliar pasa los argumentos de la persona que llama a través de la red al esqueleto del servidor. Luego, el esqueleto pasa los datos recibidos al objeto llamado, espera una respuesta y devuelve el resultado al código auxiliar del cliente. Tenga en cuenta que no existe comunicación directa entre la persona que llama y el objeto llamado.
Más detalladamente, la comunicación consta de varios pasos:
La ventaja de esta arquitectura es que ni la persona que llama ni el objeto llamado tienen que implementar lógica relacionada con la red. Esta funcionalidad, que garantiza un canal de comunicación confiable a través de la red, se ha trasladado a la capa stub y esqueleto .
El objeto del lado del cliente que participa en la comunicación de objetos distribuidos se conoce como stub o proxy y es un ejemplo de objeto proxy .
El stub actúa como puerta de enlace para los objetos del lado del cliente y todas las solicitudes salientes a los objetos del lado del servidor que se enrutan a través de él. El código auxiliar envuelve la funcionalidad del objeto del cliente y, al agregar la lógica de red, garantiza un canal de comunicación confiable entre el cliente y el servidor. El resguardo puede escribirse manualmente o generarse automáticamente según el protocolo de comunicación elegido.
El talón es responsable de:
El objeto del lado del servidor que participa en la comunicación de objetos distribuidos se conoce como esqueleto (o stub; aquí se evita el término).
Un esqueleto actúa como puerta de entrada para los objetos del lado del servidor y todas las solicitudes entrantes de los clientes se enrutan a través de él. El esqueleto envuelve la funcionalidad del objeto del servidor y la expone a los clientes; además, al agregar la lógica de red, se garantiza un canal de comunicación confiable entre los clientes y el servidor. Los esqueletos pueden escribirse manualmente o generarse automáticamente según el protocolo de comunicación elegido.
El esqueleto es responsable de: