Download - Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006
![Page 1: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/1.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/2.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/3.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/4.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/5.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/6.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/7.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/8.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/9.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/10.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/11.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/12.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/13.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/14.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/15.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/16.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/17.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/18.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/19.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/20.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/21.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/22.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/23.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/24.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/25.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/26.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/27.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/28.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/29.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/30.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/31.jpg)
Decorador: solución (I)
![Page 32: Algoritmos y Programación III 8. Patrones de despliegue, arquitectura y GoF Carlos Fontela, 2006](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/32.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/33.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/34.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/35.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/36.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/37.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/38.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/39.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/40.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/41.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/42.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/43.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/44.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062322/5665b48f1a28abb57c923128/html5/thumbnails/45.jpg)
Muchas Gracias.
Carlos Fontela, 2006