Use este padrão para fornecer desacoplamento máximo entre solicitantes de serviços e provedores de serviços introduzindo um nível adicional de vias indiretas para o serviço.
Em sua forma mais básica, o padrão de Service Proxy oculta o local verdadeiro de uma implementação de serviço. O padrão também é de valor específico no fornecimento de um ponto de gerenciamento para controle de acesso, rastreamento de pedido e auditoria.
O cliente deve chamar uma operação em um serviço. O cliente não deve acessar o serviço diretamente, porque o endereço do terminal no qual o serviço está localizado pode alterar ou o endereço do terminal real pode alterar. O endereço de terminal real é ocultado para que o acesso ao serviço possa ser controlado.
Como tornar serviços disponíveis aos clientes de uma maneira controlada sem expor o endereço real do terminal no qual o serviço está localizado.
Use este padrão quando:
Quando os serviços são expostos além dos limites organizacionais ou departamentais, problemas como segurança, manutenção de trilhas de auditoria, confiabilidade, qualidade do serviço e compatibilidade de comunicações devem ser considerados.
É desejável reter a flexibilidade da implementação de serviço. Por exemplo, ser capaz de mover o serviço para um servidor diferente sem impactar qualquer cliente desse serviço fazendo parecer que o endereço do terminal em serviço não foi alterado.
As ligações de protocolo que são suportadas pelo serviço podem não ser apropriadas para um conjunto específico de clientes. Uma solução é modificar o serviço para que ele suporte os protocolos necessários, mas em muitos casos esta solução pode não ser desejável ou possível.
Talvez você deseje ocultar o local verdadeiro do serviço para que todos os clientes precisem acessá-lo indiretamente através de um ponto de controle específico. Ocultar o local verdadeiro do serviço permite que recursos de auditoria ou verificações de autenticação de cliente adicionais sejam incluídos.
O serviço de destino é ocultado implementando uma mediação de barramento de serviço corporativo (ESB) que implementa a mesma interface. Esta mediação age como um serviço virtual, ou proxy, que redireciona todos os pedidos para o provedor de serviços real. Os clientes veem apenas o serviço virtual, que parece ser o provedor real do serviço.
Em alguns casos, o serviço virtual pode suportar um conjunto diferente de ligações de protocolo para essas ligações que são suportadas pelo serviço real, fornecendo, portanto, a conversão de protocolo necessária como parte da mediação.
Em sua forma mais simples, a mediação redireciona cada pedido para um endereço de terminal pré-configurado. Uma abordagem mais flexível usa uma consulta para um registro de serviço para determinar o endereço real, armazenando este valor em cache para uso com pedidos subsequentes.
O serviço virtual, ou mediação, implementa vários recursos adicionais. Em uma implementação típica, a mediação registra cada pedido para propósitos de auditoria. O serviço virtual também pode fornecer um nível adicional de controle de acesso, verificando as credenciais que estão associadas a cada pedido recebido. Uma implementação mais sofisticada também pode fornecer mapeamento de identidade entre diferentes domínios de segurança.