Sei sulla pagina 1di 49

Arquitectura de aplicaciones

Arquitectura en capas

API

API

dic-08

alb@uniovi.es

Layers y Tiers
Layer: capa arquitectnica de la aplicacin software
Presentacin, lgica, persistencia

Tier: capa fsica de la arquitectura de despliege del hardware


Mquinas: Servidor web, servidor de aplicaciones, servidor de base de datos

Las layers se despliegan sobre las tiers


dic-08 alb@uniovi.es 3

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

Conexiones remotas (diversas tecnologas)

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)

Internacionalizacin Informar de los errores lgicos y de ejecucin (errores internos)

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

Acceso a Lgica: ejemplo

dic-08

alb@uniovi.es

11

dic-08

alb@uniovi.es

12

Capa de Negocio: Responsabilidades


Implementa procesos de negocio identificados durante el anlisis funcional. Control de acceso a los servicios de negocio desde otras capas. Publicacin de los servicios de negocio Invocacin de la capa de persistencia.

Implementacin de Procesos de Negocio


Independientes de los aspectos de presentacin. Contra ejemplo:
Informe de varias filas donde cada una de ellas deber sombrearse de un color dependiendo de un determinado umbral. 2004 Delegacin 2003 Crecimiento
Santander Oviedo Bilbao 1.090.004 1.245.330 1.004.545 1.234.000 1.300.320 975.034 13,21 % 4,41 % -2,93 %

Control de Acceso a Servicios de Negocio


El control de acceso al servicio de negocio debe hacerse en la capa de negocio, puesto que podemos tener distintas capas de presentacin. Que perfil puede acceder a un determinado servicio?
Se delega en un componente de infraestructura.

El control se puede hacer a nivel de servicio vertical (cada Faade) o a nivel de mtodo dentro de cada servicio.

Publicacin de Servicios de Negocio


Hay servicios que se comparten con otros sistemas: Modelo colaborativo. La publicacin se debe hacer a nivel de la capa de negocio. Distintas posibilidades tecnolgicas
Web Services, RMI, IIOP, RMI-IIOP (EJB),

Nivel de seguridad mayor.

Capa lgica de negocio


Ofrece un interfaz de servicios
En JEE es una interfaz java

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

Lgica de negocio: implementacin


El cliente slo conoce la interfaz
Habr una implementacin de ese interfaz que puede ser cambiada por otra sin afectar

Puede estar dividida en subcapas


Capa de lgica: es el ncleo central de la aplicacin, la esencia del negocio, la lgica y sus reglas Capa de aplicacin: aade algn valor al procesamiento de la capa de lgica (p.e. generar un excel, un pdf, importar o exportar datos, etc.)
dic-08 alb@uniovi.es 18

Capa de lgica: implementacin


Varios patrones aplicables:
Dominios sencillos: Active record, Record set [fowler] Dominios complejos: Modelo de dominio
Problema: gestionar persistencia mapeador
JPA, Hibernate, TopLink, etc

Factory Command
dic-08 alb@uniovi.es 19

Capa de lgica: implementacin


Si se usa modelo de dominio, compuesta de:
Modelo de dominio: incluye lgica pero no toda Clases de proceso sobre el modelo: lgica que no se puede asignar directamente a ninguna clase del modelo de dominio (procesos)

En esta capa no se debera meter ninguna dependencia de tecnologa de infraestructura


Debera poderse ejecutar fuera de cualquier entorno (para testear) La persistencia suele ser la principal dependencia. La capa DAO la evita

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

Interfaz de servicio: ejemplo

dic-08

alb@uniovi.es

23

Patrn DAO: problema

dic-08

alb@uniovi.es

24

Patrn DAO: problemas si


Se necesita independencia del sistema de persistencia
BDD relacional, BDD orientada a objetos, ficheros, XML, BDD XML, serializacin,

Se debe acceder a varios sistemas desde la misma aplicacin:


Y tienen APIs muy diferentes (o ligeramente)
dic-08 alb@uniovi.es 25

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

Modelo DAO: interaccin


dic-08

alb@uniovi.es

29

Interfaces DAO: ejemplo

Mtodos CRUD bsicos

Mtodos CRUD especficos para cada entidad del modelo

dic-08

alb@uniovi.es

30

Cdigo que resuelve lgica de negocio


No tiene dependencias de persistencia

dic-08

alb@uniovi.es

31

Posibles alternativas en JEE


Beans normales de acceso a datos
DAO con JDBC y SQL

Framework de persistencia mapeo O/R


Hibernate, TopLink EJB 3.0 JPA

Conjunto de conectores a otros sistemas BackEnd


Ej. JCO o Business Connector para el acceso a SAP y BIW. Integracin con sistemas LEGACY

Soluciones Hbridas de las anteriores. Generacin de cdigo JDBC

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.

Servicios de Infraestructura Habituales


Control de transacciones Servicio de log (logging != login) Pool de conexiones JDBC (o de cualquier otro sistema de persistencia) Sistema de configuracin de la aplicacin (Assembling) Gestor de accesos/permisos de usuario a los distintos servicios de la aplicacin Provider de acceso a datos Otros

Gestin de los Servicios de Infraestructura


Componentizados Se accede a ellos a travs de una interfaz que define el servicio = contrato.

Gestin de los Servicios de Infraestructura


La responsabilidad de instanciar la clase que sirve el servicio es de las clases gestoras. La relacin de qu clase implementa un determinado servicio (interfaz java) en un momento dado se externaliza a un fichero XML
Cambios de infraestructura reconfigurar XML

Las clases del modelo no interactan nunca con una clase de servicio de infraestructura directamente siempre a travs de la interfaz

Objetivos de la Capa de Infraestructura


Se desacopla completamente la aplicacin del entorno de despliegue
La sustitucin de un componente se limita a tareas de configuracin Clases de negocio usan interfaces de servicio

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

Spring, externalizacin a xml de la configuracin

dic-08

alb@uniovi.es

44

Arquitectura en capas: patrones


Presentacin MVC Lgica Fachada Comando Factora Persistencia DAO Factora

dic-08

alb@uniovi.es

45

Solucin en capas
Service Interface Persistence Interface

Control Action Action Action Action

Fa ca de Fa ca de

Impl

Hibernate DAO

JDBC

D A O D F

JDBC DAO JPA DAO Spring DAO

Impl
Spring DI

DAO Factory

Presentac.
dic-08

Lgica
alb@uniovi.es

Persistencia
46

Interaccin entre las capas: ejemplo

dic-08

alb@uniovi.es

47

Interaccin entre capas: ejemplo lgica persistencia

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

Potrebbero piacerti anche