Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura en capas
API
API
dic-08
alb@uniovi.es
Layers y Tiers
Layer: capa arquitectnica de la aplicacin software
Presentacin, lgica, persistencia
El cdigo que se ejecuta en el navegador (AJAX, javascript) tambin pertenece a la capa de presentacin
3 layers, 2 tiers
dic-08 alb@uniovi.es 4
3 layers, 4 tiers
Conexiones locales
dic-08
alb@uniovi.es
N tiers
dic-08 alb@uniovi.es 6
Arquitectura en capas
Las capas se comunican a travs de interfaces
Las implementaciones estn ocultas al exterior Una factora sirve una implementacin para cada interfaz La capa superior se comunica con la inferior, no al revs Las capas, hechas as, son intercambiables
Y segn como se hagan reubicables
dic-08 alb@uniovi.es 7
Capa de presentacin
Resuelve la interaccin con el usuario
Mostrar datos, formatearlos, ordenarlos Solicitar datos, validarlos
Incluye algo de lgica (pero de presentacin)
dic-08
alb@uniovi.es
Capa de presentacin
Controlar la navegacin entre pantallas Algunas reglas de negocio pueden ser responsabilidad de esta capa
Presentar estos datos as y los otros as Ocultar/deshabilitar determinado dato/control si se da tal circunstancia
dic-08
alb@uniovi.es
Capa de presentacin
Puede estar dividida en subcapas
Parte en el servidor (p.e. servidor web) Parte en el cliente (p.e. navegador, AJAX)
Patrones habituales:
MVC Struts Filter Comando Struts Actions (xxx.execute()) ServiceLocator o Factory desacopla la implementacin del servicio
dic-08 alb@uniovi.es 10
dic-08
alb@uniovi.es
11
dic-08
alb@uniovi.es
12
El control se puede hacer a nivel de servicio vertical (cada Faade) o a nivel de mtodo dentro de cada servicio.
Cada servicio (mtodo) puede resolver un caso de uso o parte Los servicios pueden ser:
Sin estado: cada llamada es independiente de las dems; el cliente puede invocar en cualquier orden Con estado: existe nocin de sesin, una llamada estar condicionada por las anteriores
dic-08
alb@uniovi.es
17
Factory Command
dic-08 alb@uniovi.es 19
dic-08
alb@uniovi.es
20
dic-08
alb@uniovi.es
21
Capa de persistencia
Ofrece interfaz a la capa superior Las distintas implementaciones de la persistencia no deben ser perceptibles por la capa de lgica independencia Uso del patrn DAO
Con frecuencia un DAO para cada entidad del modelo Obtenidos a travs de una factora
dic-08 alb@uniovi.es 22
dic-08
alb@uniovi.es
23
dic-08
alb@uniovi.es
24
DAO: solucin
dic-08
alb@uniovi.es
26
DAO
DAO Data Access Object DAO proporciona una interfaz nica de acceso a los datos, de forma independiente a dnde se hallen almacenados. Independiza la lgica de negocio del acceso a los datos. Ofrece operaciones CRUD para cada objeto persistente del dominio
dic-08 alb@uniovi.es 27
Modelo DAO
DomainObject
dic-08
alb@uniovi.es
28
DomainObject
alb@uniovi.es
29
dic-08
alb@uniovi.es
30
dic-08
alb@uniovi.es
31
Pool de conexiones
Tcnica destinada a gestionar y reutilizar objetos. Crear conexiones es una de las operaciones ms caras Abrir y cerrar conexin por cada consulta es muy costoso. Funcionamiento pool conexiones estndar:
El cliente obtiene una referencia al pool 2. Obtiene del pool una conexin abierta 3. Ejecuta la sentencia SQL 4. Devuelve la conexin al pool para que sea reutilizada sin ser cerrada
1.
Pool de conexiones
dic-08
alb@uniovi.es
34
Externalizacin de SQLs
Cada proveedor ha personalizado el SQL a su propia base de datos Sentencias bsicas son iguales, las optimizadas NO Consecuencia: Las SQLs limitan la portabilidad del sistema. Posibilidades: Externalizar SQL a ficheroXML. Se limita el impacto de una posible migracin de base de datos a tareas de configuracin Permite hacer tunning mediante creacin de ndices, alteracin del modelo, etc. sin necesidad de desarrollar.
dic-08
alb@uniovi.es
36
Capa de Infraestructura
Adyacente a todas las dems. Comprende todos aquellos servicios susceptibles de ser requeridos desde cualquiera de las capas lgicas del sistema. El servicio es un componente que suele ser dependiente del entorno de despliegue del sistema Portabilidad?
Ej.: Servicio de Log vara de formato de salida de una empresa a otra, inclusive dentro del mismo grupo empresarial.
Las clases del modelo no interactan nunca con una clase de servicio de infraestructura directamente siempre a travs de la interfaz
Las clases gestoras pueden trabajar (en caso de que el componente lo permita) con pools de componentes Aumento de rendimiento
Frameworks IoC
El patrn Inversion Of Control o Inyeccin de dependencias (Fowler). Apache Avalon/Exclibur Ex Proyecto Jakarta. Spring Framework Contenedor IoC (entre otras muchas cosas) Incorporado al FPA desde la versin 1.3 PicoContainer EJB 3.0
Spring Framework
Contenedor IoC: Configuracin centralizada y automatizada Cableado de beans No invasivo Ensambla POJOs. Capa de abstraccin para plugin de monitores transaccionales Capa de abstraccin JDBC Integracin con TopLink, Hibernate, JDO, e IBATIS Funcionalidad AOP MVC
dic-08
alb@uniovi.es
44
dic-08
alb@uniovi.es
45
Solucin en capas
Service Interface Persistence Interface
Fa ca de Fa ca de
Impl
Hibernate DAO
JDBC
D A O D F
Impl
Spring DI
DAO Factory
Presentac.
dic-08
Lgica
alb@uniovi.es
Persistencia
46
dic-08
alb@uniovi.es
47
dic-08
alb@uniovi.es
48
Referencias
URLs
http://jakarta.apache.org/Struts http://theserverside.com
Libros
Programming Jakarta Struts de OReilly Mastering Tomcat Development de WILEY Java Server Programming J2EE Edition de Wrox