Padrão de Service Proxy

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.

Diagrama da arquitetura de proxy de serviço

O Contexto

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.

O Problema

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.

Orientação de Seleção

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.

A Solução

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.