sábado, 6 de julio de 2013

INTERCEPTING FILTER



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 modificados, 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.

Fortalezas:


  • 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
  • Registro y autenticación
  • Depuración y transformación de la producción para un cliente específico
  • 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.


Estructura
La figura 7.1 representa el patrón de filtro Interceptar.
   
Figura 7.1 Interceptar diagrama de clases de patrón filtro

Participantes y Responsabilidades
La figura 7.2 representa el patrón de filtro Interceptar. 
 

Figura 7.2 Interceptar diagrama de secuencia Filter

Consecuencias 

  • Centraliza el control con controladores imprecisa
    Los filtros proporcionan un lugar central para manejar el procesamiento a través de múltiples peticiones, al igual que un controlador. Los filtros se adaptan mejor a masajear solicitudes y respuestas para la manipulación último por un recurso de destino, tal como un controlador. Además, un controlador de frecuencia une la gestión de numerosos servicios comunes no relacionados, tales como la autenticación, el registro, el cifrado, y así sucesivamente, mientras que permite a los manipuladores de filtrado acoplados mucho más débilmente, que se pueden combinar en varias combinaciones.
  • Mejora la Reutilización
    Filtros promover limpiador partición de aplicación y alienta la reutilización. Estos enchufable interceptores están añadirse de forma transparente o se elimina de código existente, y debido a su interfaz estándar, que funcionan en cualquier combinación y son reutilizables para variar presentaciones.
  • Configuración declarativa y Flexible
    Numerosos servicios se combinan en diferentes permutaciones sin un solo recompilar el código base del núcleo.
  • Compartir información es ineficiente
    El intercambio de información entre los filtros puede ser ineficiente, ya que, por definición, cada filtro está débilmente acoplado. Si se deben compartir grandes cantidades de información entre los filtros, a continuación, este enfoque puede resultar costosa.
(© 2001-2002 Sun Microsystems, Inc. Todos los derechos reservados)
 

 

 

No hay comentarios:

Publicar un comentario