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ás51 páginas


Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
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
Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web
. Ya conocemos la arquitectura en capas
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
Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web
< ! 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
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
. 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
<%@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 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
<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
. 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
Departamento de Matemáticas y Computación Grado en Ingeniería Informática Programación de Aplicaciones Web
<%@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
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
. 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