JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I. 9821040-7.

Slides:



Advertisements
Presentaciones similares
RPC Versión 2 Remote Procedure Call.
Advertisements

APLICACIONES DISTRIBUIDAS
Common Object Request Broker Architecture (CORBA)
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Tecnologías Cliente / Servidor Capitulo III Richard Jiménez V. clienteserver.wordpress.com.
Profra. Hilda castillo zacatelco. Alumno: Francisco Sosa herrera
Práctica II: Java RMI.
Common Object Request Broker Architecture
Estructura de un Sistema Operativo
ESTRUCTURA DEL SISTEMA OPERATIVO
SERVIDOR DNS Y WINS INTEGRANTES: Farroñan Beltran Brenher
Lenguajes Servicios Web
Tecnologías Cliente / Servidor Capitulo III Richard Jiménez V. clienteserver.wordpress.com.
Programación Visual de Sistemas
Introducción a Programación Concurrente
"java del lado del servidor" Servlet y JSP Java Server Pages.
Tipos de Servicios Web.
Introducción a Remoting
Entornos orientados a objetos
RMI Remote Method Invocation
Base de Datos Distribuidas
RMI (Remote Method Invocation)
INSTALACIÓN Y MANTENIMIENTO DE SISTEMAS OPERATIVOS
Universidad Nacional de San Antonio Abad del Cusco
Objetos Distribuidos – Aplicaciones RMI
Inteligencia artificial
Universidad Centroamericana
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
Tecnologías para el desarrollo de aplicaciones Web
Remoting.Net Michel Rener. TEMARIO ¿Qué es una Aplicación Distribuida? ¿Qué es una Aplicación basada en Cliente/Servidor? ¿Qué es la Tecnología de Objetos.
Ejemplo CORBA: Java IDL
Administración de datos con MS-SQL Server y Visual Basic
PROCEDIMIENTOS FUNCIONES
Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services Thomas Pieper DCC, Universidad de Chile.
Invocación de Métodos Remotos RMI: Remote Method Invocation
Introducción a la Programación. Lenguaje de Máquina.
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Un sistema de gestión de bases de datos: Es un conjunto de programas que permite a los usuarios crear y mantener una base de datos. Por tanto, el SGBD.
Leonard Camacho. DCom  Tecnología propietaria de Microsoft.  Extiende el modelo COM de Microsoft.  La “D” es debido al uso de su versión DCE/RCP, conocida.
Haga clic para modificar el estilo de subtítulo del patrón 28/04/09 Por ARLEDY SARRIA MOLINA NAZLY DIAZ ARIZA JHOANNA MARQUELLA DESARROLLO DE SOFTWARE.
Integración CORBA/OODB - Discusión Una Nueva Arquitectura para la Integración de CORBA y OODB Helios Alonso - Luis Pandolfi - Pablo Rodríguez Bocca Universidad.
Universidad Nacional de San Juan Facultad de Ciencias Exactas, Físicas y Naturales “WEB SERVICES” Integrantes: Ene Adriana Guevara Vanina Martínez Cintia.
RPC Llamada Remota de Procedimientos Francisco José Cáceres Salazar Ingeniería Ejecucion Informatica Redes I.
COMPONENTES DEL SISTEMA OPERATIVO.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
 La primera versión fue desarrollada por Robert McCool, quien desarrollaba el servidor web NCSA HTTPd (National Center for Supercomputing Applications).
Manuel I. Capel Tuñón Ramón A. Carrasco González
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Cálculo de Operaciones Básicas Theo Soto G. Stefan Zepeda R. 30 de Noviembre del 2007.
Programación Orientada a Objetos
Clase #7 – Sistemas de Procesamiento de Datos
Modelo OSI Surgimiento del Modelo OSI ¿Que es el Modelo OSI?
Distributed Component Object Model
MAESTRIA EN CIENCIAS DE LA COMPUTACION Comparación de implementación de sistemas distribuidos usando COM y CORBA Jesús Gil Muñoz Julio 2001.
Arquitectura Cliente Servidor
Elementos y tipos de sistemas operativos
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
COMPONENTES DEL DNS. ESPACIO DE NOMBRE La estructura del sistema DNS se basa en una estructura de arbórea en donde se definen los dominios de nivel superior.
Sistema de Dominio DNS Por: Cesar Posada Octavio Sucerquia Yefferson Henao.
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Patrón de diseño BROKER
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
GRUPO N°1 – SISTEMAS OPERATIVOS DISTRIBUIDOS LLAMADA A PROCEDIMIENTO REMOTO.
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Transcripción de la presentación:

JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I

¿Qué es RPC? Remote Procedure Calling RPC es la base de RMI, y de todos los protocolos basados en procesamiento remoto (CORBA, IDL, DCOM, etc) Definicion: "RPC es la transferencia sincrónica de datos y control entre dos partes de un programa distribuido a través de espacios de direcciones disjuntas." O Bien: “Procesar de manera remota algún segmento de código necesario localmente, utilizando una CPU, Memoria, Stack, etc, remotos, sin salir del procesamiento local.”

Dificultades de RPC Al trabajar con RPC (y por consiguiente, con RMI) se deben tener en cuenta los siguientes problemas: – Marshalling y Unmarshalling: Estandarizar el orden de los datos – Inestabilidad de la Red: Como retornar a la programación – Seguridad: No cualquiera pueda interrumpir mi flujo de procesamiento. – Representación de Datos: Por Ejemplo, UTF8 v/s ASCII – Distribución de Hardware: Distinta zona de memoria, stack, clock de la CPU, etc.

¿Que es RMI? Paquete de JAVA para manejar objetos de manera remota y transparente para el usuario local. Características: – Uso de STUBs y SKELETONs – Uso de Interfaces – Presencia de un Registro Central: RMI Registry – Uso de Políticas de Seguridad.

Uso de STUBs y SKELETONs

Uso de Interfaces Es la única forma de comunicarse que tienen el Servidor y el Cliente. El Usuario interactúa con instancias de la Clase remota a través de la Interface, no directamente con la clase remota: public interface Calculo extends Remote { int ejecutarProceso(Proceso t) throws RemoteException; } Al crear un objeto remoto se debe “castear” la interface. En este caso, calculoSumatoria Implementa a Proceso. Proceso p = (Proceso) new calculoSumatoria( );

RMI Registry Para el correcto funcionamiento de RMI, debe existir alguien que registre los servidores que manejen objetos remotos. Es un herramienta de JAVA. Registra el par: Servidor/Objeto, para luego atender consultas de los clientes que busquen un determinado objeto. Funcionamiento: String nombre = "// :12345/MotorCalculo"; Calculo motor = (Calculo) new MotorCalculo(); Naming.rebind(nombre, motor); String nombre = "rmi:// :12345/MotorCalculo"; Calculo comp = (Calculo) Naming.lookup(nombre); Servid or Cliente

Políticas de Seguridad. Herramienta: policytool Archivo: java.policy (para este ejemplo) Politica de Seguridad: grant { permission java.net.SocketPermission "*: ", "accept, connect, listen, resolve"; permission java.net.SocketPermission "*:80", "connect"; permission java.io.FilePermission " >", "read"; };

Otras Alternativas CORBA (Common Object Request Broker Arquitecture) – CORBA es un estándar capaz de comunicar diferentes lenguajes. – El corazón de CORBA, se llama ORB ("Object Request Broker“) y se encarga de realizar la comunicación entre los sistemas heterogéneos. – Se encarga de traducir los objetos de cada, lenguaje en objetos estándar. – Las empresas poseen sus propios ORB, algunos ejemplos son: Visibroker de Borland. Component Broker de IBM. Java IDL / ORB de Sun.

Otras Alternativas… IDL (Interface Definition Language) – Es la versión JAVA de CORBA – Actualmente esta disponible en todas las versiones de JDK – Se asemeja a RMI, pero convierte los objetos en objetos estándar, para trabajar con cualquier sistema CORBA.

Otras Alternativas… DCOM (Distributed Component Object Model) – También basado en CORBA. – Nace a partir de Component Object Model (COM). – Pero obviamente permite la comunicación distribuida de los componentes. – Desarrollado por una compañía llamada Microsoft. Y aparece por primera vez 1995 con NT4 – Sin embargo, a diferencia de CORBA, quien puede correr en cualquier sistema operativo, DCOM esta implementado solo para Windows... ¬_¬

RMI v/s JAVA Similitudes – Una referencia a un objeto, puede ser pasada como argumento o retornado como resultado de cualquier invocación (local o remoto). – Un objeto remoto puede ser invocado sobre cualquier set de interfaces remotas soportadas por la implementación, usando la sintaxis de "castear", vale decir: InterfaceRemota irem = (InterfaceRemota) new ClaseRemota(); – El operador instanceof puede ser utilizado para testear la interface remota soportada por el objeto remoto. Diferencias – Los clientes de objetos remotos interactúan con interfaces remotas, NUNCA con la implementación de esas interfaces. – Argumentos no-remotos hacia, y resultados desde, una invocación remota a un método son pasados por copia en vez de por referencia. Esto se debe a que las referencias a objetos son útiles solo dentro de una maquina virtual individual. – En RMI, el cliente debe manejar una mayor cantidad de Excepciones, debido a que aumentan los tipos de fallas al invocar objetos remotos que cuando se trabaja de manera local (seguridad, red, rmiregistry, etc)

RMI v/s OTHERS Algunas de las diferencias mas relevantes: – La diferencia principal con respecto a las otras tecnologías. Es que RMI, esta acotada solo a la presencia de JAVA, mientras que las otras, son estándares Multiplataforma y Multilenguaje. – Además, CORBA no siempre provee mecanismos de recolección de basura. – DCOM, por otra parte, esta acotado solo a ambientes Windows. – IDL solo soporta paso por referencia, mientras que RMI soporta paso por valor y por referencia.

Conclusiones RMI es una muy buena alternativa para resolver el problema de aplicaciones Cliente/Servidor. Presenta una mayor simplicidad que otros sistemas. Sin embargo, esta acotada al soporte de JAVA. Una alternativa muy buena frente al problema de los “Legacy Systems” es IDL. Frente al problema de heterogeneidad, lo mejor es instaurar IDL, junto con un sistema CORBA. RMI, tampoco se recomienda en sistemas con tasa de crecimiento muy altas, no se desenvuelve bien frente a sistemas muy complicados.

¿ Preguntas ? Pueden hacer sus preguntas hasta acá. A continuación se procederá a mostrar un ejemplo...

Ejemplo Problema: – El problema consiste en calcular la suma de todos los números enteros desde 1 hasta un numero pasado como parámetro, para ello se utiliza una formula trivial. – La tarea debe ser realizada remotamente, por un servidor, que atenderá las consultas, realizará el calculo, y luego devolverá la solución. – Además, debe tener un registro de todas las operaciones realizadas, para responder inmediatamente, sin calcular, cuando se realice una consulta repetida.

Solución 1: Servidor Multihilos Funcionamiento: – El servidor parte y crea un objeto del tipo Tabla el cual se encargará de guardar los cálculos realizados. – Luego queda escuchando conexiones en un determinado puerto. – Cuando llega una conexión, se crea un objeto Hilos, que implementa la interface Runnable, se pasa la referencia al objeto Tabla y se echa a correr el Thread. – Luego se escucha la petición del cliente, se busca en la tabla (por si ya fue calculado). – Se procesa (con un método de Tabla). – Se guarda el resultado en un atributo de Tabla. – Finalmente, se devuelve la respuesta al cliente.

Solución 1: Servidor Multihilos

Solución 2: Servidor RMI Funcionamiento: – El servidor (MotorCalculo) se registra en RMIRegistry guardando su dirección. – El cliente que necesite hacer un calculo, consulta al RMIRegistry, en busca del objeto deseado. Si existe, le es devuelta una instancia de MotorCalculo. – Luego crea un objeto: Proceso t = (Proceso) calculoSumatoria(int n); – Con estas dos instancias, se ejecuta el metodo de la clase MotorCalculo: int ejecutarProceso(Proceso t); – El servidor recibe un objeto Proceso, que en realidad es una instancia de calculoSumatoria y comienza a ejecutar los métodos de calculoSumatoria en el servidor, pese a que es una clase en el cliente!!! – Una vez que el calculo es realizado, el servidor devuelve un entero como resultado del método ejecutarProceso(Proceso t).

Solución 2: Servidor RMI

La implementación del sistema se hace por medio de servidores web que mantienen las clases remotas, para que así se obtenga TOTAL INDEPENDENCIA entre el servidor y el cliente.