Tema 1: Introducción a las tecnologías de objetos distribuidos Características de las aplicaciones distribuidas n Aplicación distribuida n n n Su funcionalidad está descompuesta en componentes que se ejecutan potencialmente en distintas máquinas Concepto opuesto al de aplicación monolítica ¿ Por qué se necesitan construir este tipo de aplicaciones ? n n n n Por la propia naturaleza distribuida de algunos proyectos Para dar soporte al patrón Model-View en aplicaciones empresariales (arquitecturas en 3 capas) Por motivos de escalabilidad Para integrar aplicaciones heterogéneas sobre plataformas heterogéneas Ejemplo 1: Una aplicación de gestión de red Agente Agente Red UDC Agente Notificaciones de agentes a consola Órdenes de consola a agentes Agente Consola Ejemplo 2: Una aplicación bancaria en dos capas Capa 1 Capa 2 Vista Modelo ap. Aplicación Intranet Base de datos Vista Modelo ap. Vista Modelo ap. Aplicación Aplicación Ejemplo 2: Una aplicación bancaria en dos capas - Modelo AccountAccessor + + + + + Account AccountAccessor() findByIdentifer(identifier : String) : Account <<returns>> update(account : Account) : void add(account : Account) : void removeByIdentifier(identifier : String) : void - identifier : String - balance : double + + + + Account(identifier : String, balance : double) getIdentifier() : String getBalance() : double setBalance(newBalance : double) : void AccountOperations + transfer(sourceIdentifier : String, destinationIdentifier : String, amount : double) Ejemplo 2: Una aplicación bancaria en dos capas - Problemas n Problemas de actualización del modelo n n n n n No optimiza las conexiones a la BD n n Cambios de drivers de acceso a la BD Cambios de esquemas Cambio de tipo de BD Cambios en la lógica del modelo No es posible tener un pool de conexiones global No optimiza los accesos a la red n Cada vez que el modelo lanza una consulta/actualización a la BD, se envía un mensaje a la BD (quizás atravesando varios routers) Ejemplo 2: Una aplicación bancaria en tres capas Capa 1 Vista ap. Vista ap. Capa 2 Capa 3 Modelo Intranet Base de datos Vista ap. Ejemplo 3: Una aplicación Internet típica en dos capas Capa 1 Navegador Navegador Navegador Capa 2 Vista Modelo web Internet Servidor aplicaciones web Base de datos Ejemplo 3: Una aplicación Internet típica en dos capas - Problemas n Problema 1 n n n Nuestra aplicación web tiene “éxito” (es decir, muchos accesos) La solución no es escalable Problema 2 n n ¿ Y si queremos tener otra vista, por ejemplo, una aplicación de administración “stand-alone” ? Problemas de actualización del modelo Ejemplo 3: Una aplicación Internet típica en dos capas Una primera solución al problema 1 Capa 1 Capa 2 Navegador Vista Modelo web Navegador Navegador Internet Servidor aplicaciones web Base de datos Ejemplo 3: Una aplicación Internet típica en tres capas Máxima escalabilidad (problema 1) y solución al problema 2 Capa 1 Navegador Vista web Navegador Capa 2 Capa 3 Modelo Internet Base de datos Navegador Vista aplicación admin. Ejemplo 4: Heterogeneidad de plataformas n n n Las redes que unen las distintas máquinas pueden usar diferentes tecnologías (Ethernet, ATM, FDDI, etc.) y protocolos (ej.: TCP/IP, X.25, OSI, IPX/SPX, etc.) Las plataformas (máquina y sistema operativo) y los lenguajes de programación también pueden ser distintos Razones n n Aplicaciones “del pasado” que han de interoperar con otras más recientes sobre distintas plataformas Idoneidad de determinadas plataformas para resolver determinados problemas Tecnologías tradicionales para la construcción de aplicaciones distribuidas n Tecnologías n n n n n Sockets Wrappers sobre sockets (ej.: ACE) Sun RPC (Remote Procedure Call) DCE (Distributed Computing Environment) Problemas n n Sockets y wrappers sobre sockets n Nuevos mensajes => nuevos formatos n Código difícil de escribir y extender Todas n Los interfaces entre clientes y servidores no pueden hacer uso de las características típicas de los lenguajes orientados a objetos (encapsulación, herencia, polimorfismo, gestión de excepciones, etc.). n Software más inflexible Tecnologías de objetos distribuidos (1) n CORBA n n n Permite invocación de métodos de objetos remotos sin que importe el lenguaje en el que estén escritos el llamador y el llamado, ni las plataformas (s.o. y hw.) y redes de comunicación intermedias Grupo de estandarización: OMG (http://www.omg.org) Java RMI n Modelo fuertemente acoplado con el lenguaje Java n n Se ha estandarizado la interoperabilidad con CORBA (Java RMI over IIOP) DCOM/COM+/ActiveX n n Solución propietaria de Microsoft para sus lenguajes y sistemas operativos Grupo de “estandarización”: Active Group (http://www.activex.org) Tecnologías de objetos distribuidos (y 2) n Las tecnologías de objetos distribuidos vienen acompañadas de servicios n n n n n Nombres Transacciones Seguridad Persistencia Eventos Tecnologías de componentes distribuidos (1) n Problemas con el uso directo de las tecnologías de objetos distribuidos n Complejas de utilizar para construir aplicaciones empresariales (transacciones, persistencia, seguridad, replicación, etc.) n n El programador necesita hacer uso de servicios complejos Tecnologías de componentes distribuidos n n Permiten construir aplicaciones empresariales sin que el programador tenga que conocer el API de los servicios necesarios Se construyen sobre las tecnologías de objetos distribuidos n Ej.: un componente EJB es un objeto Java RMI (CORBA/Java) que transparentemente al programador puede usar transacciones, persistencia, seguridad, replicación, etc. Tecnologías de componentes distribuidos (y 2) n Tecnologías (paralelas a las de objetos distribuidos) n n n Enterprise JavaBeans (forma parte de J2EE) Los futuros componentes CORBA Plataforma .NET Conclusiones n Tecnologías de objetos distribuidos n n Tecnologías de componentes distribuidos n n n Alternativa de más alto nivel que las tecnologías tradicionales Facilitan la construcción de aplicaciones empresariales en tres capas. Cada tecnología de componentes distribuidos se construye sobre su homóloga de objetos distribuidos y sus servicios disponibles Ámbito de aplicación n n Normalmente se utilizan sólo dentro de intranets Cuando se precisa tener clientes en Internet, en general, mejor construir una vista web n n Los usuarios sólo necesitan un navegador (solución fácilmente mantenible) Uso de tecnologías de objetos/componentes distribuidos dentro de la intranet (vista web accede a modelo)