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