Remote Invocation

La invocación remota es un modelo de interacción (petición/respuesta) muy habitual en muchas
aplicaciones: un cliente envía un mensaje con una petición al servidor que indica la operación o
método y los argumentos y se detiene en espera de la respuesta. El servidor procesa la
petición y devuelve una respuesta. En este modelo se basa el protocolo http. Se parece a una
llamada a una subrutina local, pero difiere en varios aspectos: la red que separa al cliente del
servidor puede fallar, perder, retardar o desordenar el mensaje, la máquina cliente y servidor
pueden fallar de forma independiente y podemos desconocer si el fallo ocurrió antes, durante o
después de ejecutar la operación; las máquinas en ambos extremos pueden tener arquitecturas
y formatos de representación de datos distintos.

En otras palabras :
Invocacion Remota integra programas con arquitectura Cliente/Servidor y lenguajes de programacion. Exporta procedimientos y metodos que proveen un conjunto de operaciones sobre una clase de recursos con interfaz que especifica accesibilidad de operaciones y variables.

Invocacion Remota proporciona a las aplicaciones un modelo de programacion de alto nivel, transparencia de ubicacion, independencia de protocolos, etc.


DISEÑO DE LA INVOCACION REMOTA

La Invocacion Remota esta modelada a la imagen de una Invocacion Local (IL), pero se ejecuta en un proceso diferente, ademas en IL el tiempo de espera por respuesta es ilimato, lo que en Invocacion Remota es inaceptable.
Semantica basada en protocolo peticion-respuesta.
Diferentes fuentes de error (el mensaje no llega, el mensaje de respuesta no se recibe, el resultado de la operacion se modifica si se reejecuta, etc.)

Diferentes alternativas para tratar los posibles errores:

  • Uso de temporizadores + reenvios (en origen), para evitar perdida de mensajes peticion.
  • Reejecucion (en destino), para evitar perdida de mensajes de peticion (relativas a operaciones idempotentes, es decir, aquellas en las que no se altera el resultado si se reejecutan)
  • Mantenimiento historial peticiones + filtrado + retransmision ( en destino) , para evitar reejecucion de operaciones no idempotentes

TIPOS DE SEMANTICA EN REMOTE INVOCATION


  • Semantica tal-vez (maybe): el cliente espera un rato y sigue con su procesamiento normal al cabo de un tiempo sin saber que ocurrio:
    -Se cayo el servidor
    -No llego la solicitud
    -Se perdio la respuesta

    NO ES ACEPTABLE

  • Semantica al-menos-una-vez (at-least-once): el cliente reintenta tras temporizacion . El servidor no filtra duplicados. El cliente recibe una o mas respuestas. Solo valido para operaciones idempotentes( la reiteracion de la misma operacion no altera el resultado final)
    -Ejemplo operaciones idempotentes: Sumar(a,b); UnionConjuntos(A,B)
    -Ejemplo de operaciones no idempotentes: Concatenar(lista1, lista2)

  • Semantica como-mucho-una-vez(at-most-one): cliente reintenta tras temporizacion. El servidor filtra duplicados servicios de historial en servidor.
    El proceso en el servidor se puede ejecutar una o cero veces:
    -Una vez: el servidor no cayo y el cliente recibio una respuesta
    -Cero veces: el cliente recibe algun tipo de informe de error.

INTERFACES
Un programa es un conjunto de modulos que se pueden comunicar .
Un servicio es un modulo: exporta un conjunto de procedimientos o metodos, que proveen de un conjunto completo de operaciones.
Sobre una clase de recursos una interfaz especifica que operaciones y variables son accesibles desde otros modulos
Movimiento de argumentos: Contiene argumentos de entrada y salida, para usar argumentos por referencia se necesita de un lenguaje de definicion de interfaz.
Un modulo que corre un proceso no puede acceder a las variables de un modulo de otro proceso.
No se pueden pasar punteros.



MODELOS DE PROGRAMACION

  • Llamada a Procedimiento Remoto (RPC), programa cliente llama a procedimiento de programas servidores.
  • Invocacion a un Metodo Remoto (RMI), objeto de un proceso, invoca a metodos de otro proceso

Bibliografia:

  • http://studies.ac.upc.edu/FIB/AAD/lab/_obj/aad_objetoscorba.pdf
  • http://e-archivo.uc3m.es/bitstream/10016/2481/1/Tesis_Pablo_Basanta_Val.pdf
  • http://www.lawebdelprogramador.com/foros/ASP.NET/304401-Invocacion_remota.html
  • http://sopa.dis.ulpgc.es/pcon/material-didactico-teorico/Tema5_InvocacionRemota_6transporpagina.pdf
  • http://www.infor.uva.es/~fdiaz/sd/2005_06/doc/SD_TE04_20050509.pdf
  • http://studies.ac.upc.edu/FIB/AAD/lab/_obj/aad_objetos.pdf
  • http://www.edicionsupc.es/ftppublic/pdfmostra/IN02806M.pdf
  • http://www.scribd.com/doc/23912136/OBJETOS-DISTRIBUIDOS-E-INVOCACION-REMOTA
  • http://www-gti.det.uvigo.es/~pedro/pub/sodtr/pdf_v/tema_03.pdf

Read Users' Comments (0)