170 likes | 320 Views
Comparati v a de programació n client e /servidor con Java y Corba. Comparativa de programación cliente/servidor con Java y Corba. 1. ¿Qué herramientas conocemos para la programación Cliente/Servidor? 2. ¿Qué es Corba? 3. ¿Qué ofrece Java para aplicaciones Cliente/Servidor?
E N D
Comparativa de programación cliente/servidor con Java y Corba
Comparativa de programación cliente/servidor con Java y Corba • 1. ¿Qué herramientas conocemos para la programación Cliente/Servidor? • 2. ¿Qué es Corba? • 3. ¿Qué ofrece Java para aplicaciones Cliente/Servidor? • 4. Corba us Java Sockets • 5. Corba us RMI • 6. RMI + JINI • 7. ¿Qué le falta a Corba y a RMI? • 8. ¿Qué nos depara el futuro? • 9. Bibliografía
¿Qué herramientas conocemos para la programación Cliente/Servidor? • Sockets • Implementados en todos los S.O. Modernos • Comunican dos procesos que pueden estar alojados en dos màquinas diferentes • El cliente debe conocer la máquina y puerto donde se ubica el servidor • Se debe establecer un protocolo cliente/servidor para el correcto funcionamiento de la aplicación.
¿Qué herramientas conocemos para la programación Cliente/Servidor? • RPC’s • Basado en Sockets • Abstrae al programador del uso de Sockets • Máquina Host • Puerto • Protocolo • Sigue siendo necesaria la distinción del código cliente y del código servidor • Requiere del Port-Mapper • Publicar RPC • Preguntar por RPC, etc...
¿Qué es Corba? • Corba es: • Un producto de la O.M.G. (Object Management Group) • Un entorno para la ejecución de P.O.O. Distribuido. • Como añadir a las RPC’s el paradigma de la P.O.O. • Herencia • Poliformismo • ...
¿Qué es Corba? • Corba se puede implementar en multitud de lenguajes: • Java • C++ • Eiffel • ... • Es necesario que exista una versión de Corba para la plataforma donde se quiere implementar
¿Qué es Corba? • Estructura parecida a las RPC’s: • Fragmento IDL -> Stub Cliente • Esqueleto IDL -> Stub Servidor • ORB -> “Port-Mapper” + Marshall/Unmarshall, ...
¿Qué ofrece Java para aplicaciones Cliente/Servidor? • Java Sockets • ... • RMI • Remote Method Invocation • Solución que aporta Sun (Java) para la P.O.O. Distribuidos • Incorpora un Garbage Collector Distribuido • Cualquier plataforma para la que haya disponible una JVM puede implementar RMI
¿Qué ofrece Java para aplicaciones Cliente/Servidor? • Estructura similar a Corba:
Corba us Java Sockets • Sockets: • Requieren del conocimiento por parte del cliente de la máquina y puerto donde está el servidor. • La comunicación cliente/servidor debe implementar un protocolo tratado en tiempo de programación • Para un servicio concreto, la comunicación es n clientes a 1 servidor (Sobrecarga del servidor)
Corba us Java Sockets • CORBA: • La localidad de los servicios es transparente al programador, solo hay que conocer el nombre que se ha dado al servicio para poder llamarlo • No hace falta protocolo. Se emplean llamadas a métodos de objetos • Si n clientes solicitan un mismo servicio, se pueden hospedar n servidores en n máquinas. Balanceo de carga.
Corba us RMI • Basados en la misma idea • RMI: • Solo se puede usar con aplicaciones 100% Java • Hace falta conocer el nombre del servicio y la máquina que lo hospeda • Al estar implementado sobre la JVM, es lento
CORBA us RMI • CORBA • Se puede implementar en muchos lenguajes, incluso combinaciones de ellos. • Basta con conocer el nombre del servicio. La localidad es transparente. • Es más rápido que RMI.
RMI + JINI • JINI es otro entorno para Java que complementa a RMI • Es como un servidor de nombres para objetos Java • Con JINI, RMI adquiere la transparencia de localidad. Ya no hace falta conocer el nombre de la máquina donde está el servicio. Se lo podemos preguntar a JINI.
¿Qué le falta a Corba y a RMI? • Hace falta separar el código cliente del código servidor. A veces es difícil diferenciarlos. • No aportan un espacio de memoria compartida distribuida. No se puden distribuir Threads. • Sobrecarga de trabajo en tiempo de implementación para el programador. • Publicar los servicios • Adquirir los servicios • Necesita de herramientas especiales • Compiladores, etc...
¿Qué nos depara el futuro? • Por ejemplo: • Para Java: • cJVM: JVM modificada para poder trabajar con threads distribuidos (espacio de direcciones distribuido, ...) • JavaParty: Proceso de precompilación para convertir una aplicación 100% Java Puro en una aplicación distribuida bajo RMI. Proporciona también la posibilidad de distribuir Threads -> Espacio de direcciones distribuido. Solo son proyectos de investigación en una fase demasiado atrasada como para poder aplicarse comercialmente.
Bibliografía • http://java.sun.com • http://www.omg.org • http://wwwipd.ira.uka.de/JavaParty • cJVM • Internet, ...