3.2 - Os serviços são autônomos
Serviços são aplicações independentes autônomas, não podem ser classes ou componentes que estão fortemente ligadas a aplicativos. Os serviços destinam-se a serem implantados em uma rede, possivelmente a Internet, onde podem ser facilmente integrados em qualquer aplicação que os achem úteis.
Os serviços podem ser implantados e gerenciados de forma totalmente independente de outros serviços e quaisquer aplicações de clientes possíveis, e os proprietários destes serviços podem alterar as suas definições, implementações ou requisitos a qualquer momento. A compatibilidade de versão é um problema de longa data com todos sistemas e tecnologias distribuídas, e é agravado pela natureza aberta de serviços. Como evoluir um serviço quando você tem um grande número de clientes (possivelmente desconhecidos) que dependem dele? Veja um exemplo.
Parte da resposta para este problema reside na simplicidade deliberada e extensibilidade do modelo de serviços. Tudo o que os clientes sabem sobre um serviço é quais mensagens ele irá aceitar e retornar, e esta é a única dependência que existe entre um cliente e um serviço. Os proprietários de serviços podem alterar a implementação de um serviço à vontade, contanto que as mensagens válidas não sejam alteradas.
Veja aqui uma solução para o exemplo dado.
|
Como os serviços são autônomos, eles também são responsáveis pela sua própria segurança e têm de se proteger contra possíveis chamados maliciosos. Os sistemas implantados inteiramente num único sistema ou sobre uma rede fechada podem ser capazes de ignorar em grande medida a segurança ou simplesmente confiar nos firewalls. No entanto, serviços acessíveis através da Internet aberta têm que levar a segurança muito mais a sério.
|
Por exemplo, um banco executando um componente de servidor que só é chamado por um aplicativo contador interno pode conhecer a identidade e localização de todos sistemas cliente, deste modo a atualização do serviço é, pelo menos tecnicamente, viável. Mas o processador do cartão de crédito que pode aceitar solicitações de autorização de qualquer comerciante através da Internet não tem como saber como localizar todos os seus clientes, nem pode levá-los a atualizar suas aplicações para corresponder às novas definições de serviço.
XNosso processador de cartão de crédito poderia totalmente mudar a forma como o serviço é implementado, talvez passando de CICS / COBOL para um C # /. NET, e essa mudança será imperceptível para todos os clientes que fazem chamadas ao serviço, desde que não haja mudanças na mensagem "autorizar o pagamento".
X