Introdução
A primeira vista temos que o SOA é um tipo de arquitetura de software que promove a integração e orquestração de processos de uma organização por meio de serviços (componentes abertos/webservices).
Uma arquitetura orientada a serviços é essencialmente uma colecão de serviços interligados que comunicam entre si formando assim um único sistema. A localização dos serviços não é importante, estes podem ser internos à empresa ou disponibilizados por outras empresas. A comunicação entre os serviços pode envolver apenas simples trocas de dados, ou uma coordenação entre dois ou mais serviços.
Para compreender claramente o que é uma arquitetura orientada a serviços é necessário definir o que é um serviço.
Um serviço é uma função ou funcionalidade que se encontra bem definida, que é estanque (self-contained) e que não depende do contexto ou estado de outros serviços.
Best Practices
- Loose Coupling
Uma das praticas utilizadas no Arquitetura orientada ao serviço é o Loose Coupling entre agentes de Softwares. O Loose Coupling passa pela redução ao mínimo das dependências artificiais, sem que para esse efeito sejam comprometidas as dependências reais. Um exemplo é o serviço de roaming de um aparelho celular.
- Mensagens
As ligações fundamentais numa arquitectura orientada a serviços, não menos importantes são as mensagens que passam através dessas mesmas ligações. As mensagens que passam de um serviço a outro tem algumas regras:
As mensagens têm que ser descritivas e não instrutivas,pois a responsabilidade de resolver o problema é do fornecedor do serviço, o consumidor apenas necessita de explicar o problema. As mensagem têm que ser perceptíveis para o fornecedor do serviço, ou seja, têm que estar escritas num formato, estrutura e vocabulário que é compreendido por ambas as partes. Quanto mais restritivo for o vocabulário e a estrutura da mensagem, mais fácil é a sua compreensão, no entanto, desta forma, limita-se a extensibilidade do serviço. E ainda extensibilidade, que é o aumento do da estrutura e um vocabulario de dados para acompanhar a evolução dos sistemas de softwares.
O problema é que a restrição e a extensibilidade estão intimamente ligadas e é impossível aumentar a uma sem diminuir a outra. O truque está em encontrar o equilíbrio certo entre a duas
Serviços
Web Services
Princípios utilizados
Exemplo prático
Referências
- SOA e Web Services em Java - Cleuton Sampaio
- Barry, Douglas K. (2003) Web Services and Service-Oriented Architectures
- Lane, Edward (2004). SOA fundamentals and characteristics