terça-feira, 16 de fevereiro de 2010

Componentes e Serviços.

Neste post eu farei uma rápida revisão do artigo da JavaWorld.com http://www.javaworld.com/javaworld/jw-04-2009/jw-04-lean-soa-with-javaee6.html que discute algumas boas práticas da arquitetura baseada em serviços, utilizando o JEE 6. Pretendo apenas ressaltar alguns pontos específicos, deixando toda a parte de implementação para o texto original.

Começarei por uma frase que me chamou a atenção logo de cara:

"Component contracts are comparable to SOA's services, except for their heavier dependence on particular technology and general lack of operations-related metadata..."

Agora em "Plain Old Portuguese Words": "Os contratos definidos pelos componentes de software são comparados aos serviços do SOA, excetuando-se o fato de que aqueles são pesadamente dependentes de uma determinada tecnologia e uma relativa falta de metadados relativos às operações disponibilizadas...". O que gosto desta frase é que mostra o caráter evolucionista e não revolucionário da arquitetura baseada em serviços.

A arquitetura exposta pelo autor é voltada à camada lógica e suas 3 estruturas internas:
  • Facade (ou Boundary): único ponto de acesso da camada cliente; exporta funcionalidades de nível de negócio; e coordena os serviços internos mantendo inclusive controle transacional.
  • Service (ou Control): serviços de "nível programacional", ou seja, que mantêm os princípios de componentes como alta coesão e baixo acoplamento.
  • Domain (ou Entity): encapsula entidades com estado persistente.
OK! não acredito que estas estruturas sejam novidade para grande parte dos leitores, mas o interessante do artigo aqui comentado são as reflexões sobre esta arquitetura e sua implementação no JEE, tais como:
  • O anti-pattern "Objetos anêmicos" é praticamente sugerido como padrão para SOA, pois: podem aumentar a produtividade dado que são facilmente geráveis de forma automática; entidades persistentes podem ser exportadas para o cliente sem correr o risco de se disponibilizar lógica de negócio.
  • O padrão DAO é posto em xeque, chegando-se a conclusão de que a forma original de definição do mesmo é irreal para grande parte dos componentes SOA; o autor sugere então a utilização de Generics para a implementação de um CRUDService... (isso eu já sabia, né Ed?).
É isso... espero ter conseguido ao menos despertar a curiosidade do leitor para a leitura do artigo revisado, e dizer que as dicas são preciosas para se introduzir a idéia de componentes de software no processo de desenvolvimento.

Um comentário:

  1. Oi Daniel, primeirodesculpe invadir seu blog assim, não sou do tipo scout doido, não me interprete assim, estou apenas buscando meu sonho... e esse foi o unico meio que consegui para contacta-lo.

    Vi uma postagem sua no blog do google, e procurei você como uma alternativa pro meu problema.

    Espero sinceramente e te agradeço muito se vc puder dispender alguns minutos pra tentar me ajudar.

    Preciso de um contato de alguem da google - mais especificamente do orkut pra me ajudar num sonho. Pode parecer tolice, mas preciso encontrar um tópico perdido numa comunidade de orkut na qual sou moderador, mas não existe forma de acha-lo.

    Estou desesperadamente atrás disso hà meses. Só agora estou buscando ajuda de quem trabalha na google.

    Busco isso a muito tempo, agradeceria caso você possa me responder assim eu te relato o problema. Muito obrigado desde já.

    me ajude!

    "seja a mudança que você quer ver no mundo" Mahatma Gandhi

    meu email é rafaellopesalbano@gmail.com

    ResponderExcluir