Olá!
Após um tempo sem escrever, vou continuar explicando um pouco mais sobre os princípios básicos de SOA. Relembrando o que já foi escrito, passamos pelos primeiros três princípios, que tratam de serviços serem reutilizáveis, compartilharem um contrato formal e possuírem baixo acoplamento.
Hoje vou falar sobre o princípio que diz que os serviços devem abstrair a lógica nele contida. Ao final da explicação vou inserir um exemplo em JAVA para tentar ilustrar o princípio e facilitar a compreensão.
4. Princípio: Serviços abstraem a lógica
- O que é:
- Serviços devem ser tratados como uma caixa preta, assim como componentes de um sistema. Assim sendo, a programação nele inclusa pode ser substituída a qualquer momento, sem afetar aqueles que o consomem.
- Essa abstração deve existir tanto na linguagem de programação quanto na tecnologia, ou seja, os serviços devem tratar todas linguagens e tecnologias que o consomem da mesma forma, ignorando distinções como por exemplo big-endian ou little-endian (ordem dos bytes nas palavras).
- Aspectos positivos:
- Esse princípio é rotineiramente aplicado hoje em dia, não possui dificuldades em sua implementação;
- Permite que agentes humanos interajam com sistemas complexos de forma simples, já que a suas interfaces são de simples compreensão.
- Dificuldades:
- Algumas dificuldades podem ser encontradas com linguagens mais antigas ou menos poderosas, como Cobol. O fato de serem menos complexas leva ao fato de poder exigir um certo esforço para converter os dados de modo a deixar as chamadas transparentes a qualquer consumidor.
- Exemplo:
- Situação inicial: Disponibilizamos um serviço que conta o número de verbos em um texto. Para isso, o serviço faz uma lista de palavras e, iterando essa lista, verifica quais são verbos, em um dicionário.
- …
public Integer numeroDeVerbos(String texto){ // quebro o texto nos espaços em branco String [ ] arrayDePalavras = texto.split(" "); int contador = 0; // contador de verbos for (int i = 0; i<arrayDePalavras.length; i++){ // verifica se a palavra é verbo if ( PalavraEVerbo(arrayDePalavras[i]) ){ // se a palavra é verbo, acrescenta 1 no contador contador ++; } } return contador; }…
- Situação secundária: Queremos disponibilizar, além do serviço inicial, dois novos serviços. Um deles que retornará o número de substantivos de um texto e o outro o número total de verbos + substantivos.
- …
public Integer numeroDeVerbos(String texto){ String [ ] arrayTemp = contaVerbosESubstantivos(texto); return arrayTemp[0]; } public Integer numeroDeSubstantivos(String texto){ String [ ] arrayTemp = contaVerbosESubstantivos(texto); return arrayTemp[1]; } public Integer numeroDeVerbosESubstantivos(String texto){ String [ ] arrayTemp = contaVerbosESubstantivos(texto); return arrayTemp[0] + arrayTemp[1]; } /* * esse método retorna um array com 2 posições, * na primeira delas o total de verbos do texto, na segunda, * o total de substantivos */ private Integer [ ] contaVerbosESubstantivos(String texto){ // quebro o texto nos espaços em branco String [ ] arrayDePalavras = texto.split(" "); int contadorDeVerbos = 0; // contador de verbos int contadorDeSubstantivos = 0; // contador de substantivos for (int i = 0; i<arrayDePalavras.length; i++){ // verifica se a palavra é verbo if ( PalavraEVerbo(arrayDePalavras[i]) ){ // se a palavra é verbo, acrescenta 1 no contador contadorDeVerbos ++; }else if(PalavraESubstantivo(arrayDePalavras[i])){ // se a palavra é substantivo, acrescenta 1 no contador contadorDeSubstantivos ++; } } Integer [ ] retorno = {contadorDeVerbos, contadorDeSubstantivos}; return retorno; }…
- Na visão do usuário existem 2 novos serviços e o serviço antigo funciona como antes.
- Na visão do implementador, ele abstraiu a lógica do serviço inicial (numeroDeVerbos) e criou um método privado (contaVerbosESubstantivos) para reutilizar o código nos novos métodos (numeroDeSubstantivos e numeroDeVerbosESubstantivos) e o primeiro serviço continuou tendo a mesma funcionalidade de antes.
Enviado por: gabriel
Posts relacionados:
- Princípios Básicos de SOA – Serviços Reutilizáveis
- Princípios Básicos de SOA – Contrato Formal
- Princípios Básicos de SOA – Baixo Acoplamento
- Princípios Básicos de SOA – Serviços são Capazes de se Compor
- Caso de Sucesso com SOA
Categorias:
Divulgue esse post:
LinkTo