Thomas Erl descreve uma interessante analogia para o termo “Service-Oriented” em seu livro “Service-Oriented Architecture (SOA): Concepts, Technology, and Design”, mostrando que grandes cidades são completamente orientadas a serviços, e cada organização oferece um serviço distinto, utilizado por múltiplos clientes. Neste contexto, não faz sentido todos os serviços serem fornecidos por uma única organização.
Baseando-se nesta analogia, podemos citar um serviço de organização de grandes eventos, em que, em função de sua complexidade, utiliza serviços mais básicos, mais atômicos como, por exemplo, fotografia, filmagem, segurança, transporte, limpeza e decoração.
O serviço de organização de eventos coordena outros serviços mais básicos em uma seqüência lógica, conhece os resultados esperados de cada serviço básico (contrato de serviço), mas não precisa conhecer como foi executado, ou seja, a equipe da organização do evento não precisa conhecer técnicas de filmagem. Também não é razoável a equipe de filmagem perguntar para a equipe de segurança se a luz está adequada para o tipo de câmera utilizada.
Cada serviço expõe um conjunto de “competências” ou “capacidades”, por exemplo, o serviço de filmagem pode ter como “competência” a filmagem digital, a edição personalizada e a gravação de mídias. Podemos considerar serviços como interfaces que definem uma topologia corporativa.
Definição de serviços segundo, OASIS, Reference Model for Service Oriented Architecture 1.0:
“A service is a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description. [...]”
As “capacidades/competências” (operações) do serviço devem ser significativas para o negócio, não para a tecnologia. Exemplo de “capacidades” em um serviço básico de Cliente:
Orientado à tecnologia
clienteOPeracao(action : Integer // CRUD
, id : Integer, nome : String, address : String, account : String) id : Integer
Orientado ao negócio ( abordagem SOA )
aprovarCliente( id : Integer ) : Boolean
isCreditoClienteAprovado( id : Integer ): Boolean
Enviado por: Gustavo S. Sinis
Posts relacionados:
- Princípos Básicos de SOA – Serviços Abstraem a Lógica
- Princípios Básicos de SOA – Baixo Acoplamento
- Princípios Básicos de SOA – Serviços são Capazes de se Compor
- Webinar: Maturidade e Roadmap SOA. Participe!
- Os mitos do SOA
Categorias:
Divulgue esse post:
LinkTo