Arquitetura JBoss Seam  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Estou querendo criar uma arquitetura completa para o JBoss Seam usando JSF, EJB3, JPA, XHTML, FACELETS, JAX-WS.
Estudei vários livros do Seam (Beginning JBoss Seam, Seam Simplicity and Power Beyond Java EE, Pratical JBoss Seam Projects) e o Seam Reference, mas não encontrei nenhuma proposta de estrutura de pacotes seguindo os padrões de projeto.
Gostaria de saber se alguem já trabalhou com o Seam em produção com essas tecnologias.
Seguindo uma estrutura como proposta no livro Core J2EE (figura a baixo).
[Thumb - DesignPattern.png]
 Nome do arquivo DesignPattern.png [Disk] Download
 Descrição Padrão de Projeto usando EJB do livro Core J2EE
 Tamanho 180 Kbytes
 Baixado:  510 vez(es)

This message was edited 3 times. Last update was at 24/05/2008 09:48:46


SilvioNetto
[WWW] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Vc não encontrou em livros do Seam pq não existe uma resposta para isso.
O Seam é um framework de integração entre tecnologias JavaEE, ele não dita patterns que o desenvolvedor deve seguir, isso depende de qual modelo de arquitetura que vc quer adotar (por isso vc nao vai achar em livros do Seam). Note que um modelo de arquitetura não é simplesmente utilizar JPA, JSF, EJB3 etc, mas sim como organizar tudo isso. Se vc já estudou o Seam, sabe que ele facilita muito a vida em como obter estes recursos, mas como organizar é com vc mesmo.

É um crime vc tentar seguir padrões CoreJ2EE com tecnologias JavaEE5+ feito JPA e EJB3... as motivações de muito dos antigos patterns não fazem mais sentido algum.



... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Você acha os novos modelos como o DDD mais indicados para esse caso?
Qual uma sugestão sua para uma boa arquitetura usando esses componentes?

SilvioNetto
[WWW] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Vale lembrar que DDD não é um nova forma de desenvolver ou moldar aplicações Sivio. Evans menciona em seu livro que sua motivação para escrever o mesmo, foi que as praticas eram utilizadas a mais de 20 anos, mas não se encontrava muita literatura sobre a mesma.

Domain-Driven Design, o livro, é uma ótima literatura para trabalhar com construção do código de domínio e outros de gerência do ciclo de vida destes objetos. A base é um MDD (Model-Driven Development), de onde o modelo é obtido e trabalhado de maneira que o "conhecimento" do negócio não se perca através de abstrações da tecnologia.

Neste ponto, os recursos tecnológicos que vc citou ajuda no sentido de diminuir a necessidades destas abstações, uma vez que a maior parte de escrita de código para integração entre os recursos é provida pelas mesmas APIs utilizadas, deixando que vc foque mais tempo em resolver problemas no domínio, o qual DDD ajuda e muito.

Uma sugestão que lhe dou, em vista de arquitetura, é usar a tecnologia correta para seu problema e não catalogar uma única solução arquitetural para seus projetos. Para alguns casos, vc vai notar que utilizar a FrameworkApi do Seam (EntityHome, EntityQuery) ... pode ser mais negócio que usar Repositórios e Daos (e mesmo isso mantendo seu domínio intacto). Em outros casos, utilizar a gerência transacional do Spring em Services de domínio para acessar repositórios pode ser melhor e mais flexível/entendível para um código mais "Ubiquitous".

Faça Pet Project com a tecnologia que vc quer utilizar e neste mesmo projeto veja a necessidade de Patterns GoF , PoEAA e idéias DDD de Evans. Flexibilidade e clareza em arquitetura vc vai tendo com experiência, portanto abuse de pequenos laboratórios de projetos e leia bastante.


... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Obrigado pelas dicas!!!
Vou começar com os testes com esse novo pensamento.
Mais voltado para o modelo rico e deixar de lado os modelos anêmicos.
Valeu!!!

SilvioNetto
[WWW] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Procurei na documentação do JBoss Seam sobre o EntityHome e o EntityQuery.
Surgiu uma dúvida!!!
Quando devo usar o EntityQuery?
Se o EntityHome eu posso chamar o entityManager.
Qual seria a diferença entre um e outro?

SilvioNetto
[WWW] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

EntityHome é uma alternativa para CRUDs programáticos (usual para cadastros simples). EntityQuery executa queries, apenas invocando pelo nome.

Ex:


na página:




EntityQuery:


na página:


... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Mas a idéia de usar essas classes em uma aplicação de grande porte, seria uma boa idéia ou não?
Ou o certo seria criar as minhas próprias do zero e usar repositórios para acessar os dados???

SilvioNetto
[WWW] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Não vejo diferença em utilizar este recurso em aplicações de pequeno ou grande porte, mas sim de baixa ou grande complexidade.

Sistemas grandes tbm são recheados de CRUDs tediosos que não fazem nada além de extender um estado de um objeto (persistencia); para estes casos não vejo mal algum em utilizar recursos que facilitem isso (já que nenhuma linha de codificação será necessária). Porém se determinada história do usuário mudar e for necessário que alguma atividade do domínio seja mais efetiva para aquela entidade, então a modelagem evolui junto.

... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Concordo com você devemos tratar os casos de uso com arquiteturas diferentes.
Ou estou errado?
Por exemplo se é um caso de uso de manter Estado sem nenhuma regra de negócio, não vejo a necessidade de uma arquitetura com várias camadas.
Mas para um caso de complexidade maior ou em regras ou em quantidade de entidades, eu usaria o que fosse preciso para delegar as responsabilidades certas para as classes certas.
Me corrijam se eu estiver errado!!!

SilvioNetto
[WWW] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Sim, cada caso um caso.
Se possível, considere os princípios abaixo:

[KISS] http://en.wikipedia.org/wiki/KISS_principle
[YAGNI] http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It


... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
silvionetto
Debugger
[Avatar]

Membro desde: 14/06/2005 09:57:12
Mensagens: 67
Offline

Gostei das citações, esses links couberam como uma luva no caso.

This message was edited 1 time. Last update was at 28/05/2008 23:13:16


SilvioNetto
[WWW] [MSN]
juniorsatanas
GUJ Master
[Avatar]

Membro desde: 20/05/2007 01:08:24
Mensagens: 1864
Localização: web2ajax@gmail.com
Offline

Adorei o dialogo dos 2 ... Obrigado !

Cheque Mate em 6
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team