Semana 13 sistemas distribuidos

Click here to load reader

download Semana 13   sistemas distribuidos

of 20

Transcript of Semana 13 sistemas distribuidos

  • 1. Programacin orientada a objetos
    Sistemas distribuidos

2. Introduccin
Para aplicar el sistema de la Biblioteca como un sistema distribuido, se utilizara el mecanismo de programacin RMI (RemoteMethodInvocation) ya que es un simple pero potente framework basado en Java para disear objetos distribuidos, los cuales pueden desarrollarse rpidamente y administrarse a travs de la red.
El sistema Biblioteca es programado en Java con la IDE Eclipse Europa, y por lo tanto el RMI sera el adecuado.
3. RMI
RemoteMethodInvocation
4. Definicin
Es un mecanismo ofrecido por Java para invocar un mtodo de manera remota.
Forma parte del entorno estndar de ejecucin de Java y provee de un mecanismo simple para la comunicacin de servidores en aplicaciones distribuidas basadas exclusivamente en Java.
5. RMI se caracteriza por la facilidad de su uso en la programacin por estar especficamente diseado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recoleccin de basura distribuida (GarbageCollector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).
Por medio de RMI, un programa Java puede exportar un objeto, lo que significa que ste queda accesible a travs 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 mtodos proporcionados por el objeto.
6. La invocacin se compone de los siguientes pasos:
Encapsulado (marshalling) de los parmetros (utilizando la funcionalidad de serializacin de Java).
Invocacin del mtodo (del cliente sobre el servidor). El invocador se queda esperando una respuesta.
Al terminar la ejecucin, el servidor serializa el valor de retorno (si lo hay) y lo enva al cliente.
El cdigo cliente recibe la respuesta y contina como si la invocacin hubiera sido local.
7. La arquitectura RMI
8. La definicin de un servicio remoto se hace usando una interfaz de JAVA .
La implementacin se codifica en una clase.
Programa
Servidor
Programa
Cliente
Interfaz
Implementacin
Sistema RMI
9. Elementos
Toda aplicacin RMI normalmente se descompone en 2 partes:
Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque.
Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca.
Cliente
Servidor
Result = Obj.method1(val1)
DefObj {
int method1(int v)
{ }
string method2(string v)
{ }
int method3(int v)
{ }
int method4(int v)
{ }
}
10. RMI soporta 2 clases que implementan la misma interfaz. La primera implementa el servicio y se ejecuta en el servidor. La segunda acta como un proxy para el servicio remoto y se ejecuta en el cliente.
>
Service
Cliente
Servidor
Service
Proxy
Service
Implementation
RMI
11. Niveles de arquitectura
Client
Server
Application
Skeletons
Stubs
Remote Reference Layer
RMI
System
Transport
12. APLICACIN
La capa de la aplicacin est situada en el nivel superior del sistema RMI.
Una invocacin remota de un cliente a un servidor de objetos remotos viaja a travs de las capas del sistema RMI.
13. STUB - SKELETON
Esta capa es la que interacta directamente con la capa de aplicacin.
Todas las llamadas a objetos remotos y acciones junto con sus parmetros y retorno de objetos tienen lugar en esta capa.
14. Un stub es responsable de:
Inicializar la llamada al objeto remoto.
Hacer el marshaling de argumentos a un marshalstream, obtenido de la capa de referencia remota.
Informa a la capa de referencia remota que debe invocarse la llamada.
Hacer unmarshaling al valor de retorno o excepcin desde un marshalstream.
Informar al nivel de referencia remota que la llamada est completa.
Un skeleton es responsable de:
Hacer unmarshaling a los argumentos desde el marshalstream.
Hacer la llamada a la implementacion del objeto remoto.
Hacer marshaling al valor de retorno de la llamada o una excepcion sobre el marshalstream.
15. REFERENCIA REMOTA
Es responsable del manejo de la parte semntica de las invocaciones remotas.
Tambin es responsable de la gestin de la replicacin de objetos y realizacin de tareas especficas de la implementacin con los objetos remotos, como el establecimiento de las persistencias semnticas y estrategias adecuadas para la recuperacin de conexiones perdidas.
16. TRANSPORTE
Responsable de:
Establecer conexiones a JVM remotas.
Administrar las conexiones.
Escuchar las llamadas entrantes.
Mantener una tabla de objetos remotos que residen en la JVM.
Establecer una conexin para una llamada entrante.
Localizar el despachador del objetivo de la llamada remota y pasar la conexin a este despachador.
17. Proceso:
18. Clases, mtodos y aplicacinesa utilizar
java.rmi.Naming
Esta clase contiene los mtodos estticos que permiten el acceso a objetos remotos utilizando un URL para especificar el nombre y lugar del objeto remoto.
java.rmi.Remote
De esta clase se deben de heredar las clases a utilizar para indicar que puede llamarse desde cualquier mquina virtual Java.
java.rmi.RemoteException
Todos los mtodos deben de lanzar esta excepcin en su clusula throws, adems de las excepciones que pueda manejar.
rmiredistry
Es una aplicacin 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.
19. Ventajas y Desventajas
De usar el RMI
20. Ventajas de RMI
Hace parte del estndar del lenguaje Java.
Aprovecha las ventajas del lenguaje Java.
Los detalles de comunicacin son transparentes para el programador.
Permite el desarrollo rpido y fcil de objetos distribuidos.
Es una plataforma amigable para empezar en el rea de aplicaciones distribuidas.
Desventajas de RMI
No permite la fcil integracin con sistemas heredados.
No es rpido.
Java RMI no es ampliamente aceptado, no es interoperable.