Successfully reported this slideshow.

Arquitectura y diseño de aplicaciones Java EE

51,717 views

Published on

Arquitectura de aplicaciones Java EE con Spring Framework

Published in: Career, Technology, Education

Arquitectura y diseño de aplicaciones Java EE

  1. 1. Arquitectura y Diseño de Aplicaciones Java EE<br />Carlos G. Gavidia<br />Avances Tecnológicos SRL<br />
  2. 2. Agenda<br />Evolución de la computación distribuida<br />Arquitectura Java EE<br />Spring Framework<br />Aplicaciones en capas con Spring Framework<br />
  3. 3. Evolución de la Computación Distribuida<br />Computación distribuida: Dividir una aplicación en partes que se ejecutan simultáneamente en computadoras diferentes<br />Cada una de estas partes se denomina “nivel” (tier)<br />Cada nivel brinda servicios a otras niveles cliente<br />Cada nivel puede dividirse a su vez en “capas” (layers)<br />La mayoría de aplicaciones posee tres capas<br />Capa de presentación<br />Capa de negocio<br />Capa de acceso a datos<br />
  4. 4. Arquitecturas de un nivel<br />Mainframes accedidos mediante terminales<br />Las interfaces de usuario, la lógica de negocio y la data estaban es una sola computadora<br />Los usuarios accedían mediante terminales o consolas<br />
  5. 5. Arquitectura de dos niveles<br />También conocida como “cliente-servidor”<br />Los clientes ejecutan los programas de interfaz de usuario<br />Los servidores administran la lógica de negocio y la data<br />Ejemplo: Aplicaciones Oracle Forms<br />En algunos casos, la lógica de negocio estaba contenida en el cliente<br />Clientes gruesos/gordos<br />
  6. 6. Arquitectura de tres niveles<br />Clientes “delgados” (Browser)<br />El servidor maneja la presentación, la lógica de negocio y la lógica de acceso a datos<br />La data de la aplicación se encuentra en un sistema de información empresarial (EIS)<br />Como un DBMS<br />La lógica de negocio es accesible de manera remota<br />Servidor = Servidor de Aplicaciones = Middleware<br />
  7. 7. Arquitectura de n-niveles<br />Los servidores Web se encargan de la presentación del contenido<br />Los servidores de aplicaciones contienen componentes de negocio accesibles remotamente<br />
  8. 8. Arquitecturas Java EE<br />Hacer aplicaciones de n-niveles tiene sus ventajas<br />Mejor utilización de recursos<br />Asignar expertos a cada nivel<br />También tiene sus dificultades<br />Los niveles se deben integrar eficientemente<br />Requiere servicios: Transacciones, seguridad<br />Administrar conexiones costosas con:<br />DBMS<br />Middleware orientado a mensajes<br />El uso de API’s del servidor middleware dificulta la mantenibilidad y limita la portabilidad<br />
  9. 9. Arquitectura J2EE<br />En 1999, Sun Microsystems lanza la plataforma J2EE para solucionar estos problemas<br />Basada en la edición estándar de la plataforma Java<br />“Programa una vez, despliega y ejecuta donde quieras”<br />Apoyada por la comunidad Open Source, IBM, Oracle, BEA, etc<br />Actualmente, nos encontramos en Java EE 5.<br />
  10. 10. Contenedores Java EE<br />Los contenedores proveen un entorno de ejecución para componentes Java.<br />También brindan los servicios de seguridad, transacciones, administración del ciclo de vida, caching, persistencia, comunicación en la red<br />Existen dos tipos de contenedores:<br />Contenedores Web: Almacenan componentes de presentación (JSP, Servlets)<br />Contenedores EJB: Administran la ejecución de componentes EJB<br />
  11. 11. Contenedores Java EE<br />
  12. 12. Contenedores Java EE<br />Los contenedores brindan servicios a las aplicaciones<br />Se accede a los servicios a través de API’s Java EE:<br />Java Transaccion API<br />Java MessageService<br />Java Naming and Directory Interface<br />Java Persistence API<br />Java Transaction API<br />Gracias a esto se reducen los tiempos de desarrollo, y se simplifica el mantenimiento<br />
  13. 13. El modelo MVC<br />Propuesto por TrygveReenskaug en 1979<br />“Applications Programming in Smalltalk-80: How to use Model-View-Controller.”<br />Divide a la aplicación en 3 componentes:<br />El modeloadministra la data y aplica la lógica de negocio<br />La vista muestra la data de la aplicación y permite al usuariointeractuar con el sistema<br />El controladorsirve de mediador entre la vista y el modelo<br />
  14. 14. El modelo MVC<br />
  15. 15. Arquitectura Java EE y MVC<br />La tecnología Servlet sirve para la construcción de componentes controlador<br />Los controladores Servlet pueden invocar a componentes EJB del modelo<br />La data obtenida o modificada se puede mostrar en pantalla mediante páginas JSP<br />Podemos tener especialistas en cada tecnologías<br />Menos riesgos, mayor productividad<br />Los componentes de cada capa son fácilmente manipulables<br />
  16. 16. Arquitectura Java EE y MVC<br />
  17. 17. Capas en una Aplicación Java EE<br />Una arquitectura multi-capas es una extensión de una arquitectura MVC<br />En MVC: La capa de negocio contiene la capa de acceso a datos<br />En Java EE: La capa de acceso a datos es una capa independiente<br />Muchos orígenes de datos: DBMS, ERP’s, Mainframes<br />La capa de negocio se centra en la lógica de negocio<br />
  18. 18. Arquitectura y diseño de aplicaciones Java EE<br />Aplicaciones Java EE y Spring framework<br />
  19. 19. Spring Framework<br />Framework open-sourcepara aplicaciones Java<br />Ya lo puede usar .NET también<br />Fue descrito por Rod Johnson en Expert One-on-One J2EE Design and Development el 2002<br />
  20. 20. ¿Porqué es importante?<br />La plataforma Java EE estandarizó las aplicaciones empresariales<br />Pero no le dio importancia a un modelo simple de programación<br />Construir aplicaciones de n-niveles requería demasiado esfuerzo<br />Localizar objetos EJB mediante JNDI<br />Manejo de Data Transfer Objects<br />Usar EJB’s para soporte de transacciones implicaba crear una aplicacíón distribuida<br />El API de Beans de Entidad era sumamente complejo<br />
  21. 21. ¿Porqué Spring es importante?<br />Los desarrolladores buscaron otras alternativas:<br />Apache Struts: MVC mediante el API Servlet<br />Hibernate: Persistencia mediante POJO’s con configuración mínima<br />Spring es un frameworkmulti-nivel<br />Se integra con los mejores frameworks de un nivel<br />Provee un modelo de programación simple basado en POJO’s<br />Con Spring AOP podemos implementar seguridad y transacciones<br />Con Spring JDBC-ORM nos permite una interacción simple con la Base de Datos<br />
  22. 22. Estructura de Spring Framework<br />Está dividido en varios módulos independientes<br />Provee puntos de integración con otros frameworks<br />
  23. 23. Spring Core<br />“Columna vertebral” de todo el framework<br />Todos los módulos de Spring dependen de él<br />También se le conoce como el contenedor IOC<br />Inversión del Control (IOC)<br />Registramos objetos en el framework<br />El framework invoca los métodos de los objetos cuando sea necesario<br />El control se ha invertido: Aplicación<-Framework<br />IOC no es un concepto nuevo. Ejemplo: EJB’s<br />
  24. 24. Spring Core<br />También da soporte a la inyección de dependencias (DI)<br />Cómo un objeto encuentra a los objetos que necesita<br />Podemos lograr DI a través de IOC<br />Estrategias DI<br />Instanciación directa<br />FactoryHelper<br />Servicio de registro<br />
  25. 25. Inyección de dependencias<br />
  26. 26. Fábrica de Beans<br />Implementación sofisticada del patrón factorymethod (GoF)<br />Crea y administra los objetos de la aplicación<br />Permite configurar las clases de la aplicación y sus dependencias en archivos XML<br />Para acceder a un bean:<br />Lo registramos en el archivo de configuración XML<br />Iniciamos el contenedor IOC<br />Obtenemos el Bean de la fábrica de beans<br />
  27. 27. Fábrica de beans<br />
  28. 28. Inyección por setters<br />
  29. 29. Inyección por constructores<br />
  30. 30. Contexto de aplicación<br />Fábrica de beans: Pool donde los objetos son creados y administrados por archivos de configuración.<br />Un contexto de aplicación se la fábrica de beans más algunos servicios adicionales:<br />Archivos properties para I18N<br />Soporte AOP: Transacciones declarativas y seguridad<br />Para aplicaciones Web (También se puede registrar un servletlistenerpara inicializar el contexto)<br />
  31. 31. Spring AOP<br />Nos permite separar las funcionalidades transversales del resto de la aplicación<br />Como el manejo de transacciones<br />Nos permite construir aspectos personalizados y configurarlos declarativamente<br />
  32. 32. Spring DAO<br />Las aplicaciones Java EE utilizan el API JDBC para acceder a RDBMS<br />Esto implica codificar:<br />Obtención de la conexión<br />Instanciar PreparedStatement<br />Enviar parámetros a la sentencia SQL<br />Ejecutar el PreparedStatement<br />Obtener la información del ResultSet y poblar DTO’s<br />Liberar los recursos utilizados<br />Con Spring JDBC/DAO se remueve el código común y lo coloca en templates.<br />Implementando el patrón templatemethod<br />Agregamos el código personalizado a templatespre-establecidos<br />Spring se encarga de liberar los recursos de base de datos<br />
  33. 33. Spring ORM<br />Persistencia para objetos POJO en RDBMS<br />Extensión de Spring DAO<br />Se integra con los principales productos ORM<br />Hibernate<br />JPA<br />TopLink<br />IBatis<br />
  34. 34. Web MVC<br />Basado en el patrón arquitectónico MVC<br />Integrado con el API Servlet<br />Soporta diversas tecnologías de vista:<br />JSP<br />Velocity<br />Adobe Flex<br />Si no se desea trabajar con Spring MVC, se puede optar por:<br />Struts<br />JSF<br />
  35. 35. Aplicación en capas con Spring<br />Presentación:<br />Spring MVC permite implementar el controlador<br />Provee una capa de administración de vistas<br />Lógica de negocio<br />Los componentes de negocio son clases Java planas<br />Sin depender de un framework específico<br />Ejecutan lógica de negocio y manipulan data mediante los componente de la capa de integración<br />Con Spring AOP se puede manejar transacciones, seguridad y auditoría<br />Se pueden exponer los objetos de negocio mediante servicios web<br />Integración<br />Interactúa con el RDBMS mediante el API JDBC a través de objetos DAO<br />Nos podemos apoyar en Spring DAO y/o Spring ORM<br />También puede interactuar con ERP’s, mainframes o sistemas CRM<br />
  36. 36. Arquitectura de aplicaciones con Spring<br />
  37. 37. Bibliografía<br />Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework<br />De DhrubojyotiKayal<br />

×