2. SOCKETS
Permiten a procesos distribuidos comunicarse
por una red.
Esta compuesto de una dirección IP
concatenada con un número de puerto.
Utilizan una arquitectura cliente-servidor
3. Servidor: espera solicitudes provenientes del
cliente escuchando a un puerto especificado.
El servidor acepta una conexión del socket del
cliente para completar la conexión.
4. Servidores e Hilos
Un servidor podría manejar solicitudes
concurrentes asignando un hilo distinto.
Por Ej. Un servidor web ocupado podría asignar
un hilo distinto para dar servicio a cada solicitud
de una pagina web.
5. Sockets en Java
Los sockets orientados a conexión (TCP) se
implementan con la clase socket.
Los sockets sin conexión (UDP) utilizan la
clase DatagramSocket.
El socketMulticastSocket, que es una
subclase de DatagramSocket.
6. Invocación de métodos remotos
La RMI le permite a un hilo invocar un
método en un objeto remoto.
Los objetos se consideran remotos si residen
en una máquina virtual de java.
7. Diferencias entre RMI y RCP
Las RCP solo soporta programación de procedimientos,
por lo que solo se pueden llamar procedimientos.
Las RMI está basada en objetos, soporta la invocación
de métodos en objetos remotos.
Los parámetros para los procedimientos remotos son
estructuras de datos ordinarias en la RCP.
En las RMI es posible pasar objetos como parámetros a
métodos remotos
8. Al permitir que un programa en java invoque
método en objetos remotos, la RMI hace
posible que los usuarios desarrollen
aplicaciones en Java que se distribuyen a lo
largo de una red.
Para que los métodos remotos sean
transparentes para el cliente y para el
servidor, la RMI implementa el objeto remoto
utilizando stub y esqueletos.
9. STUB
Es una red que distribuye paquetes desde y
hacia sistemas locales.
Este componente a lado del cliente es
responsable de crear un paquete que consiste
en el nombre del método que se va a invocar en
el servidor y los parámetros
El stub separa el valor de retorno y lo pasa al
cliente.
10. Esqueleto
Una vez enviado el paquete al servidor, el
esqueleto es responsable de separar los
parámetros e invocar el método deseado en
el servidor.
Luego pone en orden el valor de retorno (o
excepción) en un paquete, devolviéndolo al
cliente.
11.
12. Objetos Remotos
Definimos a los Objetos remotos declarando
una interfaz que especifica los métodos que
pueden ser invocados en forma remota.
Por ejemplo, el paso de mensajes del
problema de productor-consumidor los
métodos son: send() y receive().
13. CORBA
Common Object Request Broker Architecture
Arquitectura común de intermediarios en
peticiones a objetos
14. CORBA
Es un estándar que establece una
plataforma de desarrollo de sistemas
distribuidos facilitando la invocación de
métodos remotos bajo un paradigma
orientado a objetos.
15. CORBA
CORBA "envuelve" el código escrito en otro lenguaje
en un paquete que contiene información adicional
sobre las capacidades del código que contiene, y
sobre cómo llamar a sus métodos. Los objetos que
resultan pueden entonces ser invocados desde otro
programa (u objeto CORBA) desde la red. En este
sentido CORBA se puede considerar como un
formato de documentación legible por la máquina,
similar a un archivo de cabeceras pero con más
información.
16. CORBA
CORBA utiliza un lenguaje de definición de
interfaces ( IDL) para especificar los
interfaces con los servicios que los objetos
ofrecerán. CORBA puede especificar a partir
de este IDL la interfaz a un lenguaje
determinado, describiendo cómo los tipos de
dato CORBA deben ser utilizados en las
implementaciones del cliente y del servidor.
17. CORBA
Al compilar una interfaz en el IDL se genera
código para el cliente y el servidor (el
implementador del objeto). El código del
cliente sirve para poder realizar las
llamadas a métodos remotos.
18. CORBA
CORBA es más que una especificación
multiplataforma, también define servicios
habitualmente necesarios como seguridad y
transacciones. Y así este no es un sistema
operativo en si, en realidad es un
middleware.
19. CORBA
Middleware (SW de nivel medio): se trata de
una capa de sw intermedio, que permite la
comunicación entre aplicaciones
heterogéneas cliente-servidor.