Articulo de referencia

Controlador frontal

El patrón de diseño de software del controlador frontal aparece en varios catálogos de patrones y está relacionado con el diseño de aplicaciones web. Es "un controlador que mane...

El patrón de diseño de software del controlador frontal aparece en varios catálogos de patrones y está relacionado con el diseño de aplicaciones web. Es "un controlador que maneja todas las solicitudes de un sitio web ", [1] lo que es una estructura útil para que los desarrolladores de aplicaciones web logren flexibilidad y reutilización sin redundancia de código.

Instrucción

Una estructura típica de controlador frontal.

Los controladores frontales se utilizan a menudo en aplicaciones web para implementar flujos de trabajo. Si bien no es estrictamente necesario, es mucho más fácil controlar la navegación en un conjunto de páginas relacionadas (por ejemplo, varias páginas utilizadas en una compra en línea) desde un controlador frontal que asignar la responsabilidad de la navegación a páginas individuales.

El controlador frontal puede implementarse como un objeto Java o como un script en un lenguaje de programación como PHP , Raku , Python o Ruby , que se llama para cada solicitud de una sesión web . Este script se encargaría de todas las tareas que son comunes a la aplicación o al marco, como el manejo de sesiones, el almacenamiento en caché y el filtrado de entradas. En función de la solicitud específica, crearía instancias de otros objetos y llamaría a métodos para manejar las tareas requeridas.

La alternativa a un controlador frontal es el uso de controladores de página asignados a cada página o ruta del sitio. Si bien esto puede provocar que cada controlador individual contenga código duplicado, el enfoque de controlador de página ofrece un alto grado de especialización.

Ejemplos

Varios marcos de aplicaciones de nivel web implementan el patrón de controlador frontal:

Implementación

Los controladores frontales se pueden dividir en tres componentes:

  1. Mapeo XML : archivos que mapean solicitudes a la clase que manejará el procesamiento de la solicitud.
  2. Procesador de solicitudes: se utiliza para procesar solicitudes y modificar o recuperar el modelo apropiado.
  3. Administrador de flujo: determina qué se mostrará en la página siguiente.

Participantes y responsabilidades

Ejemplo de implementación de Java

El controlador frontal implementado en código Java: [3]

void privado doProcess ( solicitud HttpServletRequest ,   
                       Respuesta HttpServletResponse ) 
    lanza IOException , ServletException {   
    ...
    intentar { 
        getRequestProcessor (). processRequest ( solicitud );
        getScreenFlowManager (). forwardToNextScreen ( solicitud , respuesta ); 
    } catch ( Objeto arrojadizo ex ) {    
        Cadena className = ex . getClass (). getName ();   
        siguientePantalla = getScreenFlowManager (). getExceptionScreen ( ex );  
        // Coloque la excepción en la solicitud
        solicitud .setAttribute ( "javax.servlet.jsp.jspException" , ex ) ; 
        si ( siguientePantalla == null ) {    
            // Enviar a pantalla de error general
            por ejemplo . printStackTrace ();
            lanzar nueva ServletException ( "MainServlet: excepción desconocida: " +   
                nombreClase );
        }
    }

Beneficios y responsabilidades

Hay tres beneficios principales asociados con el patrón de controlador frontal. [4]

  • Control centralizado . El controlador frontal maneja todas las solicitudes a la aplicación web . Esta implementación de control centralizado que evita el uso de múltiples controladores es conveniente para aplicar políticas a nivel de toda la aplicación, como el seguimiento de usuarios y la seguridad.
  • Seguridad de subprocesos . Un nuevo objeto de comando surge cuando se recibe una nueva solicitud y los objetos de comando no están diseñados para ser seguros para subprocesos. Por lo tanto, serán seguros en las clases de comando. Aunque la seguridad no está garantizada cuando se recopilan problemas de subprocesos, el código que interactúa con los comandos sigue siendo seguro para subprocesos.
  • Configurabilidad . Como en una aplicación web solo se utiliza un controlador frontal, la configuración de la aplicación se puede simplificar en gran medida. Como el controlador comparte la responsabilidad de enviar comandos, se pueden agregar nuevos comandos sin necesidad de realizar cambios en el código.

El patrón de controlador frontal puede generar problemas de rendimiento porque el controlador único realiza una gran cantidad de trabajo y los controladores pueden generar cuellos de botella si involucran consultas a bases de datos o documentos. El enfoque del controlador frontal también es más complejo que el de los controladores de páginas.

Relación con MVC

  1. Para mejorar la confiabilidad y facilidad de mantenimiento del sistema, se debe evitar el código duplicado y centralizarlo cuando involucra una lógica común utilizada en todo el sistema.
  2. Los datos de la aplicación se gestionan mejor en una única ubicación, lo que evita la necesidad de un código de recuperación de datos duplicado.
  3. Los diferentes roles en el patrón modelo-vista-controlador (MVC) deben separarse para aumentar la capacidad de prueba, lo que también es válido para la parte del controlador en el patrón MVC.

Comparación

El patrón de controlador de página es una alternativa al enfoque del controlador frontal en el modelo MVC.

Véase también

Referencias

  1. ^ Fowler, Martin . «Front Controller» . Consultado el 26 de septiembre de 2017 .
  2. ^ "Web MVC framework". Documentación de referencia de Spring Framework . Pivotal Software . Consultado el 26 de septiembre de 2017 .
  3. ^ "Código de demostración en Java". Archivado desde el original el 19 de abril de 2012.{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  4. ^ "Beneficios de utilizar el controlador frontal". 17 de marzo de 2014.

Notas

  • Alur, Deepak; John Crup; Dan Malks (2003). Patrones básicos de J2EE, mejores prácticas y estrategias de diseño, 2.ª edición . Sun Microsystems Press. 650 páginas. ISBN 0-13-142246-4.
  • Fowler, Martin (2003). Patrones de arquitectura de aplicaciones empresariales. Addison-Wesley Professional. 560 páginas. ISBN 978-0-321-12742-6.
  • Front Man™ de Bear Bibeault, una implementación ligera de Java.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Controlador_frontal&oldid=1222504112"