You are on page 1of 49

Arquitectura de

aplicaciones
Arquitectura en capas

API

API

dic-08 alb@uniovi.es 2
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)

Conexiones
3 layers, 4 tiers locales

dic-08 alb@uniovi.es 5
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 8
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 9
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
determinado2003
Delegacin umbral. 2004 Crecimiento

Santander 1.090.004 1.234.000 13,21 %

Oviedo 1.245.330 1.300.320 4,41 %


Bilbao 1.004.545 975.034 -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:
1. 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
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 Infra-
estructura 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 Lgica Persistencia


MVC Fachada DAO
Comando Factora
Factora

dic-08 alb@uniovi.es 45
Solucin en capas

Persistence
Service Interface
Interface

Control
JDBC
Fa Hibernate DAO
Action ca Impl
D JDBC DAO
Action de A JPA DAO
Action
Fa O Spring DAO
Action ca Impl
de Spring DI D
DAO Factory
F

Presentac. Lgica Persistencia


dic-08 alb@uniovi.es 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

You might also like