Arquitectura software en aplicaciones web: capas y patrones

Diapositivas de la Universidad de la Rioja sobre arquitectura software en aplicaciones web. El Pdf explora la arquitectura de capas y patrones, comparando MVC con arquitecturas a capas, e incluye frameworks MVC para varios lenguajes de programación. Es un recurso útil para estudiantes universitarios de Informática.

Ver más

51 páginas

Departamento de
Matemáticas y Computación
Grado en Ingeniería Informática
Programación de
Aplicaciones
Web
Arquitectura de capas y patrones
Arquitectura software
en aplicaciones web
Grado en Ingeniería Informática Programación de Aplicaciones Web 2 Francisco Pascual
Atribución
Esta presentación se encuentra bajo una Licencia Creative Commons
Atribución-NoComercial-CompartirIgual 4.0 Internacional .
Presentación basada en el material de Francisco J. García Izquierdo.
Departamento de Matemáticas y Computación.
Universidad de la Rioja.

Visualiza gratis el PDF completo

Regístrate para acceder al documento completo y transformarlo con la IA.

Vista previa

U.R. UNIVERSIDAD DE LA RIOJA

Arquitectura software en aplicaciones web

Arquitectura de capas y patrones Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones WebAtribución CC $ BY NC SA Esta presentación se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional . Presentación basada en el material de Francisco J. García Izquierdo. Departamento de Matemáticas y Computación. Universidad de la Rioja. Grado en Ingeniería Informática - Programación de Aplicaciones Web 2 Francisco Pascual

U.R. UNIVERSIDAD DE LA RIOJA

Arquitectura en capas

Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web

¿Qué sabemos ya sobre arquitectura?

  • Necesitamos organizar bien nuestras aplicaciones (web). Necesitamos una arquitectura

. Ya conocemos la arquitectura en capas

  • Responde al principio de separación de responsabilidades (separation of concerns) Tres capas O Presentación: O Lógica de negocio O Persistencia Grado en Ingeniería Informática - Programación de Aplicaciones Web 4 Francisco Pascual

Arquitectura en capas (layer)

e Navegador Presentación Lógica de negocio Persistencia SGBD Email serv. LDAP serv. ... Grado en Ingeniería Informática - Programación de Aplicaciones Web 5 Francisco Pascual

Capa de presentación

  • Comprende las responsabilidades de lógica de presentación. Básicamente: O Aceptar la petición y recoger datos enviados por el cliente O Invocar el servicio requerido y en base al resultado obtenido elaborar la nueva respuesta O Enviar la respuesta al cliente
  • Tareas: O Creación/renderizado del interface de usuario O Navegabilidad del sistema O Validación de datos de entrada O Formateo de los datos de salida O Internacionalización O Rendimiento: compresión, cacheo ... (estos últimos son transversales a la aplicación) Grado en Ingeniería Informática - Programación de Aplicaciones Web 6 Francisco Pascual

Capa de negocio o lógica

  • Comprende las responsabilidades de lógica de negocio (o dominio) del sistema: O Todo aquello que la empresa debe hacer aunque no tuviese un sistema de información
  • Resultado del análisis funcional: O Conjunto de reglas de negocio que abstraen el mundo real.
  • La capa de negocio ha de ser independiente de la capa de presentación y viceversa (en la medida de lo posible).
  • Tareas: O Las propias del dominio y, además ... O Autenticación Control de acceso Grado en Ingeniería Informática - Programación de Aplicaciones Web 7 Francisco Pascual

Capa de persistencia/recursos

  • Comprende las responsabilidades de lógica de persistencia de las entidades manejadas por la aplicación. C DAO: Data Access Object O Inserción, eliminación, actualizaciones, búsquedas Transacciones
  • No tiene porqué tratarse necesariamente de una base de datos (relacional o no).
  • También incluye el acceso a otros recursos necesarios para la aplicación: Servidores de correo Servidores de directorio O Fuentes de datos no en BD O Servicios web (servicios REST) Etc. Grado en Ingeniería Informática - Programación de Aplicaciones Web 8 Francisco Pascual

Niveles (tier)

  • Ya lo sabemos. Sólo un repaso gráfico: Dos Tres niveles niveles Navegador Presentación 0 0 Lógica de negocio Servidor web / Servidor de aplicaciones Persistencia SGBD Email serv. LDAP serv. I Grado en Ingeniería Informática - Programación de Aplicaciones Web 10 Francisco Pascual

U.R. UNIVERSIDAD DE LA RIOJA

Model 0

Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web

Páginas en servidor

  • Tecnologías: PHP, ASP.NET, JSP
  • Las páginas en servidor son "plantillas" HTML que incluyen entre líneas: O Código para acceder y analizar los datos de entrada O Código para acceder a la lógica de la aplicación o programarla ahí mismo O Referencias a datos dinámicos (huecos/placeholders) Grado en Ingeniería Informática - Programación de Aplicaciones Web 12 C Francisco Pascual

Páginas en servidor: Saludo personalizado

< ! DOCTYPE html> <html lang=\ "en\ "> <head><title>Saludo</title></head> <body><h3>Saludo personalizado</h3> <% String data = request . getParameter ( "name" ) ; if (data == null | | data . isEmpty( ) ) { %> <p>Error! No me mandas tu nombre <% } else %> <p>Hola, <%= data %> <% } %> < /body> </html> EI HTML se trata "como si" fueran instrucciones del lenguaje de programación, entre los bloque de código Referencias a datos Grado en Ingeniería Informática - Programación de Aplicaciones Web 13 C Francisco Pascual

Páginas en servidor: Procesamiento

Al procesarse: O todo el HTML estático es volcado hacia el cliente automáticamente O y el código es ejecutado ·Un tipo especial de código son las referencias a datos, que son evaluados y su valor es volcado hacia el cliente . Nos ahorramos el tener que incrustar "a mano" toda la estructura HTML en instrucciones de escritura Grado en Ingeniería Informática - Programación de Aplicaciones Web 14 C Francisco Pascual

Más fácil con páginas en servidor

. De hecho el desarrollo se podría separar O Un equipo de diseñadores gráficos crea una pagina HTML con el prototipo de la pagina O Los programadores, cambian ese prototipo, insertando la parte dinámica · Aún así, hay mucho código mezclado: O "Mucho código Java | C ... en el HTML" O Se sigue dando la pesadilla del mantenimiento Grado en Ingeniería Informática - Programación de Aplicaciones Web 15 C Francisco Pascual

Un ejemplo de JSP (Model 0)

<%@page import="java. util. List, ... "%> < ! DOCTYPE html> <html lang="en"> <head> <title>Listado</title> </head> <body> <p>Listado de productos</p> <ul> <li> ALGO , que vale XXX </li> </ul> <body> </html> HuecosUn ejemplo de JSP (Model 0) <%@page import="java. util. List, ... "%> < ! DOCTYPE html> <html lang="en"> <head> <title>Listado</title> </head> <body> <p>Listado de productos</p> <ul> Persistencia + lógica de aplicación + generación contenido dinámico <% String descr = request.getParameter("descr"); Connection con = DriverManager . getConnection("url ... ", "usr ... ", "pwd ... " ) ; Statement stm = con. createStatement () ; ResultSet rs = stm. executeQuery("SELECT descripcion, precio"+ " FROM Items"+ " WHERE descripcion LIKE '%"+descr+"%'"); while (rs. next() ) { if (rs. getDouble(2) < 150) {%> <li><%=rs. getString(1) %>, que vale <%=rs.getDouble(2) %></li> <% } } rs. close(); stm.close(); con. close() ; %> </ul> <body> </html> Huecos, referencias a datos

Model 0 (Page-centric)

  • El ejemplo anterior de JSP corresponde con lo que se denomina "Model 0" O Cada página está encargada de procesar completamente sus peticiones: procesar entrada, lógica de la aplicación, creación del HTML dinámico, envío respuesta O Básicamente el model 0 trata de crear la aplicación basada en, nada más, unas cuantas páginas JSP (page- centric)

. Model 0 puede dar lugar a aplicaciones en las que el HTML se mezcla con gran cantidad de código, como en el ejemplo anterior de PHP O Pesadilla del mantenimiento (ej .: control de los cierres de los bloques { ... }) Grado en Ingeniería Informática - Programación de Aplicaciones Web 18 C Francisco Pascual

Ojo con los cierres

<body> int año = 2023; String meses [] = {"Enero", "Febrero" ... }; int dias[] = {31, 28, 31, 30 ... }; for (int m = 0; m < meses.length; m++) %> { <%= meses [m]%> tiene <% if (m == 1 && año % 4 == 0) { %> 29 <% %> } else { <%= dias[m]%> <% } // del if días<br> <% } 77 del for % < / body> ¡Tres tipos de cierres!, y hay que balancearlos todos Grado en Ingeniería Informática - Programación de Aplicaciones Web 19 Francisco Pascual

Análisis del ejemplo anterior (model 0)

  • Aumenta la facilidad de escritura del código

. Pero siguen mezclandose las capas de persistencia, lógica y presentación . Incluso es necesario programar el acceso a los datos en los propios JSP ... ... con lo que tendríamos una única capa O Poco reutilizable O Poco legible Difícil de probar · El código está en los JSP, no en clases (difícil de probar con JUnit, por ejemplo) O Difícil de mantener · Una mejora evidente es usar capas >>> Model 1 Grado en Ingeniería Informática - Programación de Aplicaciones Web 20 Francisco Pascual

U.R. UNIVERSIDAD DE LA RIOJA

Model 1

Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web

Un ejemplo de JSP (Model 1)

<%@page import="java. util. List, ... "%> < ! DOCTYPE html> <html lang="en"> <head> <title>Listado</title> </head> Lógica de aplicación + generación contenido dinámico <body> <p>Listado de productos</p> <ul> <% String descr = request . getParameter ("descr"); List<Item> items = Persistencia. getItemsLike (descr); for (Item it : items) { if (it.getPrecio() < 150) { %> <li><%=it.getDescripcion()%>, que vale <%=it.getPrecio()%></li> <% } } %> </ul> <body> </html> Huecos Grado en Ingeniería Informática - Programación de Aplicaciones Web 22 C Francisco Pascual

Model 1: Separación de código

Es cuestión de disciplina evitar mezclar mucho código Java en el HTML · Para hacerlo mejor O Usar clases de la capa de lógica de negocio y objetos correspondientes a las entidades de negocio . A esto se le suele llamar modelo de la aplicación. O A las páginas JSP se les suele llamar vistas Actúan sobre el modelo Petición 1 Vistas Modelo 2 Clases Datos 3 Respuesta Recogen datos para la respuesta Grado en Ingeniería Informática - Programación de Aplicaciones Web 25 Francisco Pascual 4 JSP

Problemas del Model 1

. Las vistas incluyen código que O procesa la entrada O invoca a la lógica de negocio O crea el HTML · Pero, las vistas deberían preocuparse sólo de mostrar datos dinámicos (no de obtenerlos) · A pesar de las mejoras en la separación, las vistas son el único destino posible de las peticiones, lo que causa varios problemas Grado en Ingeniería Informática - Programación de Aplicaciones Web 24 Francisco Pascual

Problemas del Model 1: Repetición de código

  • Repetición de código: O Si tenemos varias versiones de vista de un mismo servicio, en todas se produce el mismo procesamiento de la entrada, las mismas llamadas a la lógica de negocio ... aunque se cree diferente HTML O Cada vista debería preocuparse sólo de mostrarse como es (crear su HTML para que se vea en el navegador) Grado en Ingeniería Informática - Programación de Aplicaciones Web 25 Francisco Pascual

¿Non has encontrado lo que buscabas?

Explora otros temas en la Algor library o crea directamente tus materiales con la IA.