45
Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Embed Size (px)

Citation preview

Page 1: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Algoritmos y Programación III

8. Patrones de despliegue,

arquitectura y GoF

Carlos Fontela, 2006

Page 2: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Temario

Patrones de despliegue

Patrones de componentes 3 capas y N capas

Persistencia Enfoque, formas de encararla Serialización, bases de datos

Patrones muy comunes Decorador Otros patrones

Page 3: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Arquitectura de despliegue

Cómo se despliega un sistema en el hardware

Aplicaciones stand-alone El sistema está desplegado enteramente en la

máquina del usuario

Aplicaciones distribuidas El usuario accede a un sistema corriendo

parcialmente en una máquina remota Las máquinas remotas pueden ser varias

Page 4: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Patrones: cliente - servidor

Ventajas Especialización de equipos

Seguridad, en algunos casos

Si es web...• Más sencillos despliegue y

actualización

Cliente

Servidor de aplicaciones

Page 5: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Patrones: tres capas

Capas = Tiers

Ventajas

Ídem anterior,

ampliadas

Muy “de moda”

Cliente

Base de datos

Servidor de aplicaciones

Page 6: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Arquitecturas y UML (I)

Diagrama de despliegue

Servidor Base de Datos

Servidor de Aplicaciones

Servidor Web

Servidor ComercialPC Empleado

Consulta Catálogo Intranet

Sistema Compras

Servicio Web CatálogoPáginas JSP

Clases de Negocio Catálogo (Java)

Sistema Ventas

HTTP

Ethernet

HTTP

Ethernet

Base de Datos Catálogo

Page 7: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Arquitecturas y UML (II)

Consulta Catálogo Intranet Sistema Compras

Servicio Web CatálogoPáginas JSP

Clases de Negocio Catálogo (Java)

Sistema Ventas

iCatalogo

Interfaz Web XML SOAP

Base de datos de Catálogo

Diagrama de componentes

Page 8: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Arquitecturas de componentes

Simplemente arquitectura Descripción de componentes de software y

sus interacciones Separación garantiza posibilidad de cambios Generalmente basada en patrones

MVC 3 capas N capas

Combinables con las anteriores Por lo tanto, independientes

Page 9: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Patrón de 3 capas

No confundir con

homónimo de

despliegue

Capas = layers

Ventajas

Cambios en IU y DAL

Varios IU o DAL

Otras interfaces

Interfaz de usuario

Modelo de negocio

Acceso a datos

Interfaz de usuario

Modelo de negocio

Acceso a datos (DAL)

Page 10: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Patrones de N capas: ejemplo

Interfaz de usuario

Modelo de negocio

Acceso a datos

Seguridad

Adm

inistración Operativa

Com

unicación

Interfaz de usuario

Modelo de negocio

Acceso a datos

Seguridad

Adm

inistración Operativa

Com

unicación

Page 11: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Patrones de N capas ++

Seguridad

Adm

inistración

Com

unicación

Componentes de la IU

Componentes de procesos de la IU

Servicios de IU

Flujos delmodelo

Componentesdel modelo

Entidadesdel modelo

Componentes lógicosde acceso a datos

Agentes deservicios

Seguridad

Adm

inistración

Com

unicación

Componentes de la IU

Componentes de procesos de la IU

Servicios de IU

Flujos delmodelo

Componentesdel modelo

Entidadesdel modelo

Componentes lógicosde acceso a datos

Agentes deservicios

Page 12: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Capa de acceso a datos

También DAL “Data Access Layer”

Dos enfoques Como persistencia de objetos

• (diseño orientado a objetos)

Como abstracción de la base de datos• (diseño por datos)

Page 13: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Persistencia

Capacidad de un objeto de trascender el tiempo o el espacio Guardar el estado de un objeto Enviar un objeto por una red

Debiera ser transparente Y no lo es casi nunca

Separación de identidad y estado En diagrama de clases de UML

{persistent}

Page 14: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Persistencia y agregación

Simple Casi siempre incorrecta Persistir sólo el objeto principal, con sus

referencias

Polimórfica Mantiene referencias y valores

Isomórfica Recuperación sin conocer el tipo

Page 15: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Serialización

Cadenas de bytes Soportada en varios lenguajes

• Java, .Net

Multiplataforma si lo es el lenguaje• Java, .Net

No es multilenguaje

XML Con APIs especiales en cada lenguaje: SAX,

DOM, JDOM, dom4j Multiplataforma y multilenguaje

Page 16: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Entrada y salida en Java (I)«interface»

DataOutputStream«interface»

DataInputStream

OutputStream InputStreamRandomAccessFile ReaderWriter

1 1 1 1

File

1 1 1 1

OutputStream

FileOutputStream PipedOutputStream ByteArrayOutputStreamFilterOutputStream

DataOutputStream PrintStream BufferedOutputStream

ObjectOutputStream

Page 17: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Entrada y salida en Java (II)

Ejemplo:BufferedReader entrada = new BufferedReader

(new FileReader("Datos.txt"));

while ( (s = entrada.readLine()) != null)

System.out.println(s);

entrada.close();

Cambios en 1.4 A java.io se le agrega java.nio Mejor desempeño Mejor soporte de redes

Page 18: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Serialización en Java (I)

Implementar java.io.Serializable Cáscara vacía Permite al compilador generar información de

serialización Evita el lanzamiento de

NotSerializableException Por el resto es automático y permite usar

ObjectOutputStream y ObjectInputStream para leer y escribir

Page 19: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Serialización en Java (II)

Ejemplo:class Fraccion implements Serializable {

// …public void serializar (String archivo) throws IOException {

ObjectOutputStream salida = new ObjectOutputStream(new FileOutputStream(archivo));

salida.writeObject(this);}public Fraccion hidratar (String archivo)

throws IOException,ClassNotFoundException {ObjectInputStream entrada = new ObjectInputStream(

new FileInputStream(archivo));return (Fraccion)entrada.readObject();

}}

Page 20: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Serialización en Java (III)

Realiza persistencia isomórfica Si las clases de los objetos contenidos

implementan Serializable Si las clases ancestros implementan

Serializable

Y persistencia polimórfica Si se usa reflexión

Object o = entrada.readObject();

if (o.getClass() == Fraccion.class)

Fraccion z = (Fraccion)o;

Page 21: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Serialización .Net

.Net tiene una anotación (“atributo”) Serializable Semántica similar a Java

Page 22: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Persistencia y bases de datos

Vimos que la persistencia no necesariamente se hace sobre bases de datos

Pero las bases de datos son centrales en las organizaciones

Page 23: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Bases de datos y OO (I)

La BDR no es OO Problemas con identidad de objetos No almacena objetos, con atributos y

comportamiento Pero se usa en el 90% de las

aplicaciones corporativas Se construye una capa filtrante que

haga el cambio de paradigma• De eso estamos hablando: DAL

Page 24: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Bases de datos y OO (II)

BDOO Definición imprecisa Sin éxito comercial destacable Muchas ni siquiera soportan herencia y

polimorfismo Ejemplos

Gemstone, Objective/DB, ObjectStore, Ontos, O2, Itasca, Matisse, Versant, Poet, Objectivity, db4o

Page 25: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Visión J2EE

Es la más audaz Propone que todo EJB de tipo “CMP entity”

mantenga su estado en un repositorio permanente sin que el programador se deba preocupar de ello Con bases de datos relacionales o no

Fuertes críticas Restricciones sobre el modelo de clases Dificultades de implementación Bajo desempeño

Page 26: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Bases de datos y Java

JDBC SQL multiplataforma desde Java Paquete java.sql

Ejemplo, luego de compleja inicialización:ResultSet r = s.executeQuery("SELECT NOMBRE, APELLIDO

FROM alumnos WHERE TELEFONO Is Not Null ORDER BY APELLIDO");

// iteramos para encontrar los resultados:

while (r.next())

// r es una especie de iterador

System.out.println(r.getString("APELLIDO")+", "+r.getString("NOMBRE"));

Page 27: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Frameworks de persistencia (I)

Se ocupan de hacer un mapeo del mundo de los objetos al mundo relacional “O/R-mapping”

Generalmente trabajan con archivos XML que definen cómo se hace el mapeo

Muchas soluciones comerciales muy buenas Ahorran mucho trabajo A veces me evitan desarrollar la DAL

Page 28: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Frameworks de persistencia (II)

Casos Hibernate JDO OJB DataObjects Varios más

Cuando no son suficientes, puedo construir mi propio framework

Page 29: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: presentación (I)

Para agregar responsabilidades dinámicamente Respetando el principio abierto-cerrado Ejemplo:

un modelo de automóvil en tres variantes, llamadas sedán, coupé y familiar, y cada variante tiene un precio básico de venta;

a cada variante se le pueden agregar opcionales como techo corredizo, aire acondicionado, sistema de frenos ABS, motor diesel y motor de 16 válvulas, y cada uno tiene un precio que se suma al básico;

cada auto podrá tener ninguno, uno o más opcionales.

¿Cómo calculamos los precios?

Page 30: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: presentación (II)

Solución tradicional: herencia. Una clase para cada combinación posible Con 3 variantes y 5 opcionales, las

combinaciones posibles son 3 x 25 = ¡96 clases!

Otra: atributos booleanos Diseño difícil de cambiar (p.ej. nuevos

opcionales)

Solución con Decorador: Diseño inicial más complejo Más escalable

Page 31: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: solución (I)

Page 32: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: solución (II)

public interface Auto {double costoTotal();

}public class Sedan implements Auto {

private double costo = 30000.0;public double costoTotal() {

return costo;} }  

public class Familiar implements Auto {private double costo = 40000.0;public double costoTotal() {

return costo;} }

Page 33: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: solución (III)

public abstract class DecoradorOpcionales implements Auto {

protected Auto basico;

public Decorador (Auto comp) { basico = comp; }

public double costoTotal() {

return basico.costoTotal();

} }

public class TechoCorredizo extends DecoradorOpcionales {

private double costo = 1500.0;

public TechoCorredizo (Auto comp) { super(comp); }

public double costoTotal() {

return basico.costoTotal() + costo;

} }

public class AireAcondicionado extends DecoradorOpcionales { …

Page 34: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: solución (IV)

Instanciación:Auto a = new TechoCorredizo(

new AireAcondicionado(new Sedan()));

Un nuevo opcional Con herencia, 96 clases más Con Decorador, una clase más

Cambio del precio de un opcional Con herencia, 48 cambios Con Decorador, 1 cambio

Page 35: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: uso general

Agregar comportamiento a métodos de un objeto Antes o después de llamarlos Mediante envoltorios a la clase servidora

(“wrappers”)

Ejemplo Clases de java.io

Page 36: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: otro ejemplo (I)

Supongamos que deseo contar cada vez que se llama el método dibujar en cualquier clase

Page 37: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: otro ejemplo (II)

Solución con Decorador:

Figura f = new Contador (new Elipse() );

Page 38: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Decorador: otro ejemplo (III)

¿Pero, cómo nos aseguramos de que siempre asocie un Contador a cada Figura creada? Podemos encapsular la creación de

figuras y allí envolver cada objeto en un Decorador

Esto es otro patrón

Page 39: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Otros patrones habituales (I)

Estrategia Permite variar dinámicamente un

algoritmo Adaptador

Adapta un servicio para usarlo desde una clase

Fachada Simplifica el acceso (interfaz) a varios

servicios de un subsistema

Page 40: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Otros patrones habituales (II)

Proxy Objeto intermediario con la misma

interfaz que el objetivo Estado o State

Cuando cambia el estado de un objeto, que cambie su comportamiento

Compuesto o Composite Para definir objetos compuestos con la

misma interfaz que sus componentes

Page 41: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Otros patrones habituales (III)

Muchos más GoF Orden Memento Fábrica abstracta Son 23…

Muchos más de otros autores-recopiladores MVC es un patrón compuesto Patrones de Larman

Page 42: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Resumen

Arquitecturas Facilitar cambios y modificaciones

DAL: dos enfoques Persistencia de objetos Abstracción de BD

BDR se usan a través de un mapeo O/R

Decorador Agrega comportamiento antes o después de la

llamada a un método

Page 43: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Qué sigue

Vuelta a programación Concurrencia Buen código OO Aplicaciones distribuidas e integración de

aplicaciones

Page 44: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Bibliografía y otras fuentes

Patrones de diseño Gamma et al.

Head-First Design Patterns Eric Freeman – Elisabeth Freeman

UML y patrones Craig Larman

Orientación a objetos con Java y UML Carlos Fontela

Page 45: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006

Muchas Gracias.

Carlos Fontela, 2006