lunes, 8 de julio de 2013

INTERCEPTING FILTER

INTERCEPTING FILTER
El patrón de diseño de filtros interceptación se utiliza cuando queremos hacer algo de post-procesamiento de pre-procesamiento / con la petición o la respuesta de la aplicación. Los filtros se definen y aplican en la solicitud antes de pasar la solicitud a la aplicación de destino real. Los filtros pueden hacer la autenticación / autorización / registro o el seguimiento de la solicitud y luego pasar a las peticiones de los controladores correspondientes. A continuación se presentan las entidades de este tipo de patrón de diseño.
·         Filtro - Filtro que llevará a cabo determinada tarea antes o después de la ejecución de la solicitud por el controlador de solicitudes.
·         Cadena Filter - Filtro Cadena lleva varios filtros y ayuda a ejecutar con el fin definido en el blanco.
·         Target - Objeto de destino es el controlador de solicitudes
·         Administrador de filtros - Administrador de filtros gestiona los filtros y cadena de filtros.
·         Client - Cliente es el objeto que se envía la solicitud al objeto de destino.

CONTEXTO


El mecanismo de manejo de petición de niveles de presentación recibe muchos tipos diferentes de peticiones, que requieren diversos tipos de procesamiento. Algunas peticiones son simplemente enviados a la componente de controlador adecuado, mientras que las demás solicitudes deben ser modificadas, auditado o no comprimido antes de ser procesados ​​posteriormente.

PROBLEMA

Se requiere preprocesamiento y post-procesamiento de una solicitud Web cliente y la respuesta.
Cuando una petición entra en una aplicación Web, a menudo tiene que pasar varias pruebas de acceso antes de la etapa de procesamiento principal. Por ejemplo,
·         ¿Se ha autenticado el cliente?
·         ¿El cliente tiene una sesión válida?
·         Es la dirección IP del cliente de una red de confianza?
·         ¿La ruta de solicitud violan las restricciones?
·         Lo codificación no utilizar el cliente para enviar los datos?
·         ¿Apoyamos el tipo de navegador del cliente?
Algunas de estas comprobaciones son pruebas, dando lugar a una respuesta de sí o no que determina si el proceso continuará. Otros controles manipular el flujo de datos entrante en una forma adecuada para su procesamiento.
La solución clásica consiste en una serie de comprobaciones condicionales, con cualquier prueba fallida abortar la solicitud. Anidadas declaraciones if / else son una estrategia estándar, pero esta solución conduce a la fragilidad del código y un estilo de copiar y pegar de la programación, ya que el flujo de la filtración y la acción de los filtros se compila en la aplicación.
La clave para resolver este problema de una manera flexible y discreta es tener un mecanismo simple para agregar y quitar componentes de procesamiento, en el que cada componente completa una acción de filtrado específica.

BENEFICIOS

·         Procesamiento común, tales como comprobar el esquema de codificación de datos o de registro de la información acerca de cada petición, completa por solicitud.
·         Se desea centralización de la lógica común.
·         Los servicios deben ser fáciles de añadir o eliminar discretamente sin afectar a los componentes existentes, de modo que puedan ser utilizados en una variedad de combinaciones, tales como
o    Registro y autenticación
o    Depuración y transformación de la producción para un cliente específico
o    Uncompressing y la conversión de esquema de codificación de entrada

Solución

Crear enchufable filtros para procesar los servicios comunes de manera estándar sin necesidad de cambios en el código de procesamiento de solicitudes de núcleo. Los filtros interceptan las solicitudes entrantes y las respuestas salientes, lo que permite pre-procesamiento y post-procesamiento. Somos capaces de agregar y quitar estos filtros discretamente, sin requerir cambios en el código existente.
Podemos, en efecto, para decorar nuestro procesamiento principal, con una variedad de servicios comunes, tales como la seguridad, la explotación forestal, la depuración, etc. Estos filtros son componentes que son independientes del código de la aplicación principal, y pueden ser añadidos o eliminados mediante declaración. Por ejemplo, un archivo de configuración de despliegue puede ser modificado para configurar una cadena de filtros. El mismo archivo de configuración puede incluir un mapeo de direcciones URL específica a esta cadena de filtros. Cuando un cliente solicita un recurso que coincide con este mapeo URL configurado los filtros de la cadena son cada procesan en orden antes de invocar el recurso de destino solicitado.

ESTRUCTURA
Representa el patrón de filtro Interceptar
Participantes y Responsabilidades Participantes y Responsabilidades Participantes y Responsabilidades







PARTICIPANTES Y RESPONSABILIDADES

Representa el patrón de filtro Interceptar.



FilterManager

El FilterManager gestiona el procesamiento de filtros. Crea el FilterChain con los filtros adecuados, en el orden correcto, y se inicia el proceso.

FilterChain

El FilterChain es una colección ordenada de filtros independientes.

FilterOne, FilterTwo, FilterThree

Estos son los filtros individuales que se asignan a un objetivo. El FilterChain coordina su procesamiento.


No hay comentarios:

Publicar un comentario