semana 13 sistemas distribuidos
TRANSCRIPT
- 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.