Padrão de Service Facade

Use um padrão de Service Facade para fornecer loose coupling entre um solicitante de serviços e a funcionalidade que é fornecida por um aplicativo ou recurso que não é ativado por serviço. O loose coupling oculta as complexidades do provedor e apresenta uma interface de serviço da web padrão.

Um padrão de Service Facade também introduz um ponto de mediação para o aplicativo de funções padrão tal como a criação de log.
Um diagrama mostrando o comportamento do padrão. Aplicativos enviam pedidos de serviço ao broker, que preenche estes pedidos usando a funcionalidade que não fornece uma interface de serviço.

O Contexto

Quando uma arquitetura corporativa move em direção a uma Arquitetura Orientada a Serviços, geralmente é necessário acommodar sistemas legados existentes que executam partes grandes dos negócios, mas que não possuem uma competência de serviços. Estes aplicativos geralmente usam funções que devem estar acessíveis aos pacotes de software ativados por serviço mais novos, mas que oferecem acesso apenas atravérs de adaptadores, sistema de mensagens ou outras técnicas de integração não orientadas a serviço.

O Problema

Aplicativos legados não se ajustam naturalmente em um ambiente de Arquitetura Orientada a Serviços (SOA) e alterações nesses sistemas são caras e requerem habilidades raras. O problema é descobrir uma maneira de integrar tais sistemas com pacotes e aplicativos orientados a serviço mais novos. Em particular, é necessário criar uma ponte entre o protocolo HTTP síncrono que é geralmente usado com serviços da Web e os protocolos de sistema de mensagens que geralmente são usados por aplicativos legados.

Orientação de Seleção

Este padrão é apropriado quando uma empresa deseja apresentar uma interface de serviço aos clientes solicitantes como parte de um ambiente SOA, mas aplicativos do provedor não podem ser atualizados facilmente para fornecer interfaces de serviço.

Este padrão é usado onde aplicativos do provedor fornecem uma interface XML e aplicativos clientes suportam chamadas para serviços da Web. O padrão pode ser estendido com transformações para suportar uma fachada de serviço para aplicativos com interfaces não XML sobre WebSphere MQ.