SCA com Java Parte 1

SCA é um padrão aberto para construção de serviços. Esse padrão é uma das possibilidades para a implementação de serviços compostos usando SOA, mas não é a única. A idéia não é nem um pouco nova, na verdade se você usa Spring Framework é bem provável que você já venha fazendo algo parecido.

A grande diferença do SCA para o que você já faz é que como dito antes SCA é um padrão aberto que prove uma solução para amarração(wire) de serviços e composição de serviços de uma forma padronizada, consistente e independência de fornecedor. Além disso o SCA possibilita a tão sonhada interoperabilidade.

A Interoperabilidade é algo fundamental quando falamos de SOA, mas isso pode ser conseguido de outras formas utilizando orquestração de serviços com BPEL e deixando o transporte para um ESB a vantagem de usar SCA sobre essa outra abordagem que descrevi é o fato de que você tem um módulo mais coeso com SCA.

Conceitos Básicos de SCA


Componente SCA




A Figura a cima ilustra do que é composto um componente SCA. Além de componentes SCA conta com Composite e Domínio que são outros conceitos básicos e importantes, vamos falar primeiro do Componente.

O Componente SCA em Java é um ordinária classe java que implementa alguma interface, é só isso mesmo, você pode escrever componentes em outras linguagens e tecnologias como por exemplo BPEL, C++ ou até mesmo em EJB. Para isso vamos precisar de mais um conceito que é o Binding, mas isso fica mais para frente.

Voltando ao componente ele pode se expor seus serviços de diversas formas, as mais comuns são a própria interface Java e depois WebServices. Esse componente pode usar outros componentes que são chamados de referências.

O mesmo serviço pode ter propriedades que são pontos de parametrização do serviço. Como eu disse antes se você já desenvolve com Spring Framework isso tudo faz muito sentido e não é muito diferente da forma que você trabalha.

Adaptar uma aplicação bem feita com Spring para SCA é um doce, des de que você tenha usando e abusado de interfaces e injeção de dependência vai ser um tarefa fácil, mas isso fica para outro post.

O Composite

É como se fosse um modulo para o SCA, nele você faz a composição de um serviço e diz que esse serviço tem diversos serviços. Essas configurações são feitas em XML de forma muito parecida com a injeção de dependências do Spring Framework.

Você pode trabalhar de duas formas ou configura todas as amarrações do SCA através de arquivos .composite ou você usa o auto-wire que é uma forma de ele amarrar os serviços utilizando menos configuração ainda esse é um recurso poderoso que existe no Fabric3 que é uma implementação de SCA para java.

Isso mesmo meu amigo esse recurso de auto-wire é muito semelhante ao recurso de auto-wire do Spring Framework. Você pode compor diversos composites com SCA.

O Domínio

É onde existe um runtime de SCA, você pode ter vários em uma máquina ou ter um domínio por máquina, nessa questão a especificação do SCA 1.0 não se manifesta em como seria esse mecanismo de remotabilidade ela foco nos componentes e na forma de amarração apenas.


SCA com Composite - Componentes e Domínios

A Figura a cima mostra os conceitos explicados anteriormente, nesse cenário uma aplicação JEE em alguns container acessa o composite SCA A que por sua vez acessa a um componente Java que acessa a um componente de outro domínio escrito em C++ e acessa ao um banco de dados forma do SCA, como pode ver tecnologias que não sejam SCA podem conversar com tecnologias SCA.

Os Bindings

Fazem parte de especificação SCA e padronização a comunicação de SCA com outras tecnologias como EJB, JMS, JCA e outros. Isso ajuda a desenvolver aplicações em java que podem utilizar SCA e bem como a migrar aplicações existentes para o padrão SCA.

Existem Anotações

Na especificação de SCA para java estão especificadas um conjunto de anotações que podem ser utilizadas, dentre elas cito a @Reference e @Propertie que servem, na ordem, para indicar a referência de outros serviço e para obter a a propriedade do de um serviço.

Existem algumas implementação de SCA, existem implementações proprietárias como a da IBM mas existem implementações open source como a da Fabric3, no próximo post vou mostrar como implementar um composite SCA de maneira simples com Fabric3 Maven 2 e anotações.

Abraços e até o próximo post.


Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java