Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.

Slides:



Advertisements
Presentaciones similares
APLICACIONES DISTRIBUIDAS
Advertisements

Nau Gran dHivern Intr. a la creación y gestión de páginas web Introducción a la web.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
“GUI para Conexiones y Transferencia de Datos Seguros”
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Práctica II: Java RMI.
Common Object Request Broker Architecture
Servicios Web.
Los servicios de red son la fundación de una red de trabajo en un ambiente de computadoras. Generalmente los servicios de red son instalados en uno o.
Arquitectura CLARO-TECNOTREE
Introducción a Programación Concurrente
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Introducción a Remoting
Entornos orientados a objetos
RMI Remote Method Invocation
RMI (Remote Method Invocation)
PROTOCOLOS Un protocolo es un conjunto de reglas que hacen que la comunicación en una red sea más eficiente.
Objetos Distribuidos – Aplicaciones RMI
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
El Socket Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub.
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Primer Programa en JAVA
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
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.
Tema 6: Clases Antonio J. Sierra.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Sockets en Java. Sockets ● Para programar aplicaciones en red en Java se utilizan los Sockets. ● Un socket permite establecer y manejar una conexión entre.
INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN INTEGRANTES: MARTINEZ MISHELL MEDINA ENID MENENDEZ EVELYN.
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
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
JAVA RMI The Java Remote Method Invocation ELO330 – Programación de Sistemas Cesar Vásquez I
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Teoría de Sistemas Operativos
1 Nivel aplicación Interacción Cliente Servidor Agustín J. González ELO309.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
RPC Llamada Remota de Procedimientos Francisco José Cáceres Salazar Ingeniería Ejecucion Informatica Redes I.
1 Capítulo 21: Interacción Cliente Servidor ICD 327: Redes de Computadores Agustín J. González.
Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.
Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Manuel I. Capel Tuñón Ramón A. Carrasco González
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono: Fax: Módulo 9: Desarrollo de Aplicaciones.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Teoría de Sistemas Operativos Sistemas Archivos de Red
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Detalles Generales sobre Java
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Protocolos de comunicación TCP/IP
Protocolos de Transporte y Aplicación
En informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol)
RMI: Invocación a método remoto, y Java RMI
Transcripción de la presentación:

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 1 Broadcasting: implementación Veamos una primera solución: En el servidor usamos un thread para oir y registrar a los clientes. El programa principal (que es otro thread) queda en un ciclo infinito leyendo lineas del teclado y ditribuyéndolas a los clientes conectados. El cleinte simplemente se conecta y lee en un ciclo infinito lo que el servidor le manda y lo muestra en la pantalla (no escribe al servidor). Veamos una segunda solución: El servidor lee el mensaje desde otro socket. Queda escuchando en el socket 4444 para los clientes que quieren recibir los mensajes y en 4445 a clientes que quieren mandar mensajes. Haremos otro programa cliente que haga esto. La tercera solución corresponde al cliente definitivo que también tiene un thread que lee y escribe en pantalla lo que el servidor manda y el programa principal acepta lineas del teclado y las manda al servidor. Veamos los casos 1 y 2 andando. Programas

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 2 Comunicación Servidor-Cliente sin conexión Ambos programas abren un socket para enviar y/o recibir datagramas. Pueden o no estar asociados a un port dado El que recibe primero el datagrama (servidor) debería esperar paquetes en un port dado para que el enviador (cliente) sepa dónde enviarlos para que los reciba. El enviador no necesita poner un número de port explícitamente (aunque vaya a recibir paquetes de respuesta) ya que en el datagrama irán los datos del host y port de dónde fue enviado. Veamos ejemplos:

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 3 Multicasting Qué pasa cuando se quiere hacer un broadcasting de datos demasiado pesados ? Por cada cliente, el servidor queda mucho rato pegado escribiendo datos. Imáginémonos ahora la situación en una videoconferencia: se trata de transmitir varios frames de video por segundo a una cantidad grande de oyentes => no es posible en la práctica ! En el Multicasting se trata de transmitir una sola vez la información a un punto en la internet, y desde ahí la leen los clientes Esto implica que el hardware (el de la red, se entiende) debe ser multicastingable

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 4 Llamadas remotas: RPC (remote procedure call) Fue el primer mecanismo que se implementó para facilitar el llamado remoto de funciones entre dos procesos en máquinas distintas la motivación fue la implementación del NFS de Sun Existen 2 formas de diseñar aplicaciones distribuidas Orientado a la comunicación: se empieza diseñando el protocolo Orientadao a la aplicación: se desarrolla el programa como si fuera local, luego se divide en módulos que se ejecutan separados el paradigma de rpc se focaliza en la aplicación. Permite al programador concentrarse en el desarrollo de un programa convencional que trata de resolver el problema planteado antes de tratar de dividirlo para que opere en multples computadores.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 5 Llamadas remotas: RPC (2) Se trata de extender el concepto de llamadas a procedimientos (funciones, métodos) que son ejecutados en otros computadores. El proceso que hace la llamada se bloquea hasta que retorna la llamada del rpocedimiento remoto. Tiene analogía con el concepto cliente-servidor: el computador que pide que se ejecute un procedimiento en otro es el cliente, el servidor es el que ejecuta el procedimiento. A un procedimiento remoto se le pueden pasar parámetros y puede retornar resultados => datos viajan por la red XDR: un protocolo para estandarizar el formato de los datos que viajan por la red (eXtrernal Data Representation) De esta manera cliente y servidor pueden intercambiar datos

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 6 Llamadas remotas: Cómo se programan ? Se debe primero especificar un archivo con el protocolo del proceso remoto que se va a tener: nombre del proceso, parámetros que recibe, resultado que retorna Este es el llamado archivo de interfaz (entre cliente y servidor): el cliente no conoce la implementación del procedimiento pero sí cómo se llama. El servidor implementa el procedimiento declarado (con ayuda de una biblioteca que lo conierte en proceso llamable desde otro computador) El cleinte, usando el archivo de interfaz, escribe un programa que llama a este procedimiento. 1. Primero debe establecer contacto con el servidor (existe una función para ello) 2. Hacer la llamada como si fuera un procedimiento local, dando los parámetros necesarios y recibiendo lo que retorna el procedimiento.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 7 Objetos Remotos en JAVA La tecnología RMI (Remote Method Invocation) permite a un programa corriendo en una máquina virtual de java (un intérprete) invocar el método de un objeto localizado en otra máquina virtual de java (ubicada en cualquier parte de la red TCP/IP que se pueda acceder desde el lugar) Normalmente se tiende a ver aplicaciones que usan RMI como aplicaciones de cliente servidor. Una típica aplicación de servidor crea un objeto, lo publica para que pueda ser accesible de cualquier otro lado y espera a que llamen clientes pidiendo la invocación de sus métodos. Una típica aplicación cliente obtiene una referencia al objeto remoto en el servidor y luego invoca sus métodos como si fuera un objeto local. RMI provee mecanismos con los cuales el cliente y el servidor se pueden intercambiar información, convirtiendolas en aplicaciones de objetos distribuidos. Estos mecanismos deben hacer posible: 1) localizar objetos remotos, 2) comunicarse con los objetos remotos 3) traspasar el código de los objetos remotos (deben ser serializables

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 8 Interfaces, objetos y métodos remotos Como en otras aplicaciones, una aplicación distribuida que usa RMI está constituida por interfaces y clases. Las interfaces definen los métodos que serán conocidos por los clientes de los objetos remotos. Las clases remotas implementan estos y quizas otros métodos también. Un objeto remoto se implementa siguiendo los siguientes pasos: 1) Diseño e implementación de las componentes de la aplicación distribuida 2) Compilar los códigos fuentes y generar los llamados stubs y skeletons 3) echar a andar la aplicación

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 9 Diseñar e implementar las componentes de la aplicación Definir las interfaces remotas: Una interfaz remota especifica los métodos que pueden ser invocados en forma remota por un cliente. Los clientes conocerán los objetos remotos sólo a través de las interfaces. Implementación de los objetos remotos: los objetos remotos deben implementar una o más interfaces remotas. Además pueden implementar otros métodos que no corresponden a las interfaces remotas y que son de uso local. Implementar los clientes: Los clientes que usan los objetos remotos se pueden implementar una vez que las interfaces remotas están definidas.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 10 Un ej: Un objeto remoto que contiene un número //el archivo de definición de la interfaz import java.rmi.*; public interface Numero extends Remote { public int getNumero() throws RemoteException; } Este es la definición de la interfaz: implica que los clientes sólo conocerán el método getNumero() de el objeto remoto. Para los clientes la clase de este objeto es Numero, no importa cómo lo haya llamado en el archivo de implementación del tipo de objeto.

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 11 Un ej: Un objeto remoto (2 la implementación) //el archivo de definición de la implementación import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class NumeroImpl extends UnicastRemoteObject implements Numero { int cont = 0; public int getNumero() throws RemoteException { int ret = cont++; return ret; } public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { NumeroImpl n = new NumeroImpl(); Naming.rebind("//"+args[0]+"/elNumero",n); System.out.println("Numero creado"); } catch (Exception e) {} }

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 12 Aclaración: Existe un servidor de comunicaciones !!!!) Es un programa que provee java llamado rmiregistry Se echa a correr en la máquina donde está el programa servidor del objeto remoto Cualquier cliente que quiera ocupar el objeto remoto debe pedirle a él una referencia al objeto remoto antes de ocuparlo => debe saber con qué nombre se registró y en qué máquina esta corriendo. Cliente rmiregistry servidor Internet Naming.rebind(1) Naming.lookup(2) Objeto.metodo() (3)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 13 Un ej: Un objeto remoto que contiene un número (3 el cliente) //el archivo del cliente import java.rmi*; import java.rmi.server.*; class ClienteNumero { public static void main(String args[]) { try { Numero N = (Numero) Naming.lookup("//"+args[0]+"/elNumero"); System.out.println("El numero vale ahora +N.getNumero(); } catch( Exception e) {} } Notar que el cliente sólo conoce al objeto remoto por su interfaz. Por eso, para el cliente el número no es de tipo NumeroImpl sino Numero. Naming.lookup(2)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 14 Compilar los códigos fuentes y generar las clases y los llamados stubs y skeletons Una vez implementados las 3 clases hay que compilarlas para generar Numero.class: la interfaz que define lo que se conocerá del objeto en toda la red. NumeroImpl.class: que es el que implementa el objeto remoto. Además de implementar el constructor y el método de la interfaz contiene un main que lo único que hace es crear el objeto y registrarlo o publicarlo con un nobre dado. Cliente.class Esto se hace con el compilador javac Naming.lookup(2)

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 15 Compilar los códigos fuentes y generar las clases y los llamados stubs y skeletons(2) Una vez generadas las 3 clases hay que compilar la clase implementadora para generar el stub y skel. NumeroImpl_stub.class: Es el llamado stub del objeto remoto. Es el encargado de recibir y transmitir los datos necesarios para servir a los clientes que piden acceso al objeto remoto NumeroImpl. NumeroImpl_skel.class: es como un esqueleto de la clase. Tiene sólo la estructura de la clase pero es suficiente información para que el cliente pueda reunir todo los antecedentes para llegar a hacer un pedido al stub Esto se hace con el compilador rmic NumeroImpl

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 16 Echar a andar toda la aplicación Echar a correr rmiregistry: java rmiregistry Echar a correr el programa servidor de objeto remoto: java -Djava.rmi.server.codebase=file:///c:\publico\ -Djava.rmi.server.hostname=ciguena -Djava.security.policy=policy.txt NumeroImpl Echar a correr cliente(s): java -Djava.security.policy=policy.txt Cliente Una vez obtenida la referencia por el cliente el flujo de datos corre: cliente -> skel->stub->Server->stub->skel->cliente