Está en la página 1de 49

Arquitectura de

aplicaciones

Arquitectura en capas

API

API

dic-08

alb@uniovi.es

Layers y Tiers


Layer: capa arquitectnica de la


aplicacin software


Tier: capa fsica de la arquitectura


de despliege del hardware


dic-08

Presentacin, lgica, persistencia

Mquinas: Servidor web, servidor de


aplicaciones, servidor de base de datos

Las layers se despliegan sobre las


tiers
alb@uniovi.es

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

Conexiones remotas
(diversas tecnologas)

3 layers, 4 tiers

dic-08

Conexiones
locales

alb@uniovi.es

N tiers
dic-08

alb@uniovi.es

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


dic-08

Y segn como se hagan


reubicables
alb@uniovi.es

Capa de presentacin


Resuelve la interaccin con el


usuario



Mostrar datos, formatearlos, ordenarlos


Solicitar datos, validarlos





dic-08

Incluye algo de lgica (pero de


presentacin)

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

alb@uniovi.es

Capa de presentacin


Controlar la navegacin entre


pantallas
Algunas reglas de negocio pueden
ser responsabilidad de esta capa


dic-08

Presentar estos datos as y los otros


as
Ocultar/deshabilitar determinado
dato/control si se da tal circunstancia

alb@uniovi.es

Capa de presentacin


Puede estar dividida en subcapas





Patrones habituales:



dic-08

Parte en el servidor (p.e. servidor web)


Parte en el cliente (p.e. navegador,
AJAX)
MVC  Struts Filter
Comando  Struts Actions
(xxx.execute())
ServiceLocator o Factory  desacopla
la implementacin del servicio
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
umbral. 2004
Delegacin
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







Cada servicio (mtodo) puede resolver


un caso de uso o parte
Los servicios pueden ser:


dic-08

En JEE es una interfaz java

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

alb@uniovi.es

17

Lgica de negocio:
implementacin


El cliente slo conoce la interfaz





Puede estar dividida en subcapas




dic-08

Habr una implementacin de ese interfaz


que puede ser cambiada por otra sin afectar
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.)
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




dic-08

JPA, Hibernate, TopLink, etc

Factory
Command
alb@uniovi.es

19

Capa de lgica:
implementacin


Si se usa modelo de dominio, compuesta


de:



En esta capa no se debera meter ninguna


dependencia de tecnologa de
infraestructura



dic-08

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)

Debera poderse ejecutar fuera de cualquier


entorno (para testear)
La persistencia suele ser la principal
dependencia. La capa DAO la evita

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



dic-08

Con frecuencia un DAO para cada


entidad del modelo
Obtenidos a travs de una factora
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


Se debe acceder a varios


sistemas desde la misma aplicacin:


dic-08

BDD relacional, BDD orientada a


objetos, ficheros, XML, BDD XML,
serializacin,

Y tienen APIs muy diferentes (o


ligeramente)
alb@uniovi.es

25

DAO: solucin

dic-08

alb@uniovi.es

26

DAO




dic-08

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

27

Modelo DAO

DomainObject

dic-08

alb@uniovi.es

28

Modelo DAO:
interaccin

DomainObject

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




Framework de persistencia mapeo O/R




Hibernate, TopLink  EJB 3.0 JPA

Conjunto de conectores a otros sistemas


BackEnd


DAO con JDBC y SQL

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

Lgica

Persistencia

MVC

Fachada
Comando
Factora

DAO
Factora

dic-08

alb@uniovi.es

45

Solucin en capas
Persistence
Interface

Service Interface

Control
Action
Action
Action
Action

Presentac.
dic-08

Fa
ca
de
Fa
ca
de

Impl

Hibernate DAO

D
A
O

Impl
Spring DI

Lgica
alb@uniovi.es

D
F

JDBC

JDBC DAO
JPA DAO
Spring DAO

DAO Factory

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

También podría gustarte