Utilice este patrón para proporcionar desacoplamiento máximo entre solicitantes de servicio y proveedores de servicio al introducir un nivel adicional de indirección al servicio.
En su forma más básica, el patrón Proxy de servicio oculta la ubicación verdadera de una implementación de servicio. El patrón también tiene un valor particular al proporcionar un punto de gestión para el control de acceso, seguimiento de solicitudes y auditoría.
El cliente debe llamar a una operación en un servicio. El cliente no debe acceder al servicio directamente, porque la dirección del punto final en la que el servicio se encuentra puede cambiar o la dirección de punto final real puede cambiar. La dirección de punto final real está oculta para que el acceso al servicio no se pueda controlar.
Cómo hacer los servicios disponibles para los clientes en una forma controlada sin exponer la dirección del punto final real en el que está ubicado el servicio.
Utilice este patrón cuando:
Cuando los servicios están expuestos más allá de los límites organizativos o departamentales, es preciso tener en cuenta cuestiones como la seguridad, mantenimiento de seguimientos de auditoría, fiabilidad, calidad de servicio y compatibilidad de comunicaciones.
Es deseable mantener la flexibilidad del servicio de despliegue. Por ejemplo, se puede mover el servicio a un servidor diferente sin que ello influya en ninguno de los clientes de ese servicio.
Es posible que los enlaces de protocolo que están soportados por el servicio no sean adecuados para un conjunto específico de clientes. Una solución es modificar el servicio para que soporte los protocolos necesarios, pero en muchos casos esta solución puede no ser deseable o posible.
Tal vez prefiera ocultar la ubicación verdadera del servicio para que todos los clientes deben acceder al mismo indirectamente a través de un punto de control específico. Ocultar la ubicación verdadera del servicio permite añadir prestaciones de auditoría o comprobaciones de autenticación de clientes adicionales.
El servicio de destino se oculta al desplegar una mediación de bus de servicio empresarial (ESB) que implemente la misma interfaz. Esta mediación actúa como un servicio virtual, o proxy, que redirige todas las solicitudes al proveedor de servicio real. Los clientes sólo ven el servicio virtual, que parece ser el proveedor real del servicio.
En algunos casos el servicio virtual puede dar soporte a un conjunto de enlaces de protocolo diferentes de los enlaces que están soportados por el servicio real, por lo que la conversión de protocolo necesaria se proporciona como parte de la mediación.
En su forma más simple, la mediación redirige cada solicitud a una dirección de punto final preconfigurada. Un enfoque más flexible utiliza una consulta a un registro de servicio para determinar la dirección real, almacenando en la memoria caché este valor para utilizarlo con solicitudes posteriores.
El servicio virtual, o mediación, implementa varias características adicionales. En una implementación típica, la mediación registra cada solicitud para fines de auditoría. El servicio virtual también puede proporcionar un nivel adicional de control de acceso, al comprobar las credenciales asociadas con cada solicitud entrante. Una implementación más sofisticada también puede proporcionar una correlación de identidad entre dominios de seguridad diferentes.