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