Semana 13 sistemas distribuidos

2,990 views

Published on

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,990
On SlideShare
0
From Embeds
0
Number of Embeds
71
Actions
Shares
0
Downloads
111
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Semana 13 sistemas distribuidos

  1. 1. Programación orientada a objetos<br />Sistemas distribuidos<br />
  2. 2. Introducción<br />Para aplicar el sistema de la Biblioteca como un sistema distribuido, se utilizaría el mecanismo de programación RMI (RemoteMethodInvocation) ya que es un simple pero potente framework basado en Java para diseñar objetos distribuidos, los cuales pueden desarrollarse rápidamente y administrarse a través de la red.<br />El sistema Biblioteca es programado en Java con la IDE Eclipse Europa, y por lo tanto el RMI sería el adecuado.<br />
  3. 3. RMI<br />RemoteMethodInvocation<br />
  4. 4. Definición<br />Es un mecanismo ofrecido por Java para invocar un método de manera remota. <br />Forma parte del entorno estándar de ejecución de Java y provee de un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java.<br />
  5. 5. RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recolección de basura distribuida (GarbageCollector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).<br />Por medio de RMI, un programa Java puede exportar un objeto, lo que significa que éste queda accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de este momento, un cliente puede conectarse e invocar los métodos proporcionados por el objeto.<br />
  6. 6. La invocación se compone de los siguientes pasos:<br />Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serialización de Java).<br />Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta.<br />Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente.<br />El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.<br />
  7. 7. La arquitectura RMI<br />
  8. 8. La definición de un servicio remoto se hace usando una interfaz de JAVA . <br />La implementación se codifica en una clase.<br />Programa<br />Servidor<br />Programa<br />Cliente<br />Interfaz<br />Implementación<br />Sistema RMI<br />
  9. 9. Elementos<br />Toda aplicación RMI normalmente se descompone en 2 partes:<br />Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.<br />Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca.<br />Cliente<br />Servidor<br />Result = Obj.method1(val1)<br />DefObj {<br />int method1(int v)<br /> { }<br />string method2(string v)<br /> { }<br />int method3(int v)<br /> { }<br />int method4(int v)<br /> { }<br /> }<br />
  10. 10. RMI soporta 2 clases que implementan la misma interfaz. La primera implementa el servicio y se ejecuta en el servidor. La segunda actúa como un proxy para el servicio remoto y se ejecuta en el cliente.<br /><< Interface >><br />Service<br />Cliente<br />Servidor<br />Service<br />Proxy<br />Service<br />Implementation<br />RMI<br />
  11. 11. Niveles de arquitectura<br />Client<br />Server<br />Application<br />Skeletons<br />Stubs<br />Remote Reference Layer<br />RMI<br />System<br />Transport<br />
  12. 12. APLICACIÓN<br />La capa de la aplicación está situada en el nivel superior del sistema RMI.<br />Una invocación remota de un cliente a un servidor de objetos remotos viaja a través de las capas del sistema RMI.<br />
  13. 13. STUB - SKELETON<br />Esta capa es la que interactúa directamente con la capa de aplicación.<br />Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa.<br />
  14. 14. Un stub es responsable de:<br />Inicializar la llamada al objeto remoto. <br />Hacer el marshaling de argumentos a un marshalstream, obtenido de la capa de referencia remota. <br />Informa a la capa de referencia remota que debe invocarse la llamada. <br />Hacer unmarshaling al valor de retorno o excepción desde un marshalstream. <br />Informar al nivel de referencia remota que la llamada está completa. <br />Un skeleton es responsable de:<br />Hacer unmarshaling a los argumentos desde el marshalstream. <br />Hacer la llamada a la implementacion del objeto remoto. <br />Hacer marshaling al valor de retorno de la llamada o una excepcion sobre el marshalstream. <br />
  15. 15. REFERENCIA REMOTA<br />Es responsable del manejo de la parte semántica de las invocaciones remotas.<br />También es responsable de la gestión de la replicación de objetos y realización de tareas específicas de la implementación con los objetos remotos, como el establecimiento de las persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. <br />
  16. 16. TRANSPORTE<br />Responsable de:<br />Establecer conexiones a JVM remotas. <br />Administrar las conexiones. <br />Escuchar las llamadas entrantes. <br />Mantener una tabla de objetos remotos que residen en la JVM. <br />Establecer una conexión para una llamada entrante. <br />Localizar el despachador del objetivo de la llamada remota y pasar la conexión a este despachador. <br />
  17. 17. Proceso:<br />
  18. 18. Clases, métodos y aplicaciónes a utilizar<br />java.rmi.Naming<br /> Esta clase contiene los métodos estáticos que permiten el acceso a objetos remotos utilizando un URL para especificar el nombre y lugar del objeto remoto.<br />java.rmi.Remote<br /> De esta clase se deben de heredar las clases a utilizar para indicar que puede llamarse desde cualquier máquina virtual Java.<br />java.rmi.RemoteException<br />Todos los métodos deben de lanzar esta excepción en su cláusula throws, además de las excepciones que pueda manejar.<br />rmiredistry<br />Es una aplicación del servidor que se utiliza para registrar un nombre y un lugar de un objeto remoto. Esto se realiza a partir de un servidor que contiene un objeto remoto.<br />
  19. 19. Ventajas y Desventajas<br />De usar el RMI<br />
  20. 20. Ventajas de RMI<br />Hace parte del estándar del lenguaje Java.<br />Aprovecha las ventajas del lenguaje Java.<br />Los detalles de comunicación son transparentes para el programador.<br />Permite el desarrollo rápido y fácil de objetos distribuidos.<br />Es una plataforma amigable para empezar en el área de aplicaciones distribuidas.<br />Desventajas de RMI<br />No permite la fácil integración con sistemas heredados.<br />No es rápido.<br />Java RMI no es ampliamente aceptado, no es interoperable. <br />

×