Dúvida Sobre Arquitetura Web

Boa tarde galera, estou começando a redesenhar um sistema Web um tanto que grandezinho, que é utilizado por umas 20/30 pessoas em média.

O sistema possui suas peculiaridades, por exemplo:
- Internacionalização por usuários (en, pt, es)
- Acesso a diversos databases separados por paises, mas com tabelas identicas.

Para que fique mais claro, por exemplo, eu me logando no sistema, ele estaria todo em portuques por causa da internacionalização do meu usuario, e apareceriam os dados meu pais por exemplo Brasil, mas eu teria acesso a informações de outro pais como Argentina, oq na verdade só mudaria o acesso ao banco, pq as tabelas são identicas.

Minha dúvida agora, é sobre a tecnologia a ser utilizado para o desenvolvimento do sistema, começando pela a parte simples de login, internacioalização e troca de database.

Comecei utilizando alguns padrões bem conhecidos como:
- JSF + Hibernate + Open Session in View

Não sei se é realmente é uma boa opção, mas a Internacionalização é bem facil, e a parte de banco, fiz um SessionFactory pra cada pais, que o Filtro abre a sessão de acordo com o parametro do usuario logado.

Vocês acham q alguma outro combinação, ficaria melhor? por exemplo:

  • JSF + Spring + Hibernate
  • Jboss Seam + (Hibernate)??
  • EJB3

vlw

abs

Seu problema é de arquitetura, ou dúvidas sobre qual framework usar? no caso, uma arquitetura mvc, e entre as camadas vc utilizar o padrão de projeto fábrica já soliciona boa parte dessa confusão, se vc quiser utilizar uma arquitetura voltada para componente, basta criar componentes configuravies de acordo com a internacionalização… se vc tem dominio sobre os frameworks citados não vai ter muito problema no desenvolvimento…

Opa, vlw por ter respondido, então minha dúvida é em qual framework usar, qual se enquadraria melhor para solucionar essa arquitetura, sei que não existe uma receita de bolo para isso, mas é para não acontecer algo como adotar uma solução e começar a estuda-la e depois ver la na frente que outra coisa se encaixaria melhor, sei que isso acaba agregando valores no desenvolvimento, mas tbm seria um risco de um projeto falhar né?

Uma grande dúvida no meu post é se existiria outro jeito de trabalhar com a sessão do hibernate na visualização, porque do jeito q estou trabalhando, a sessão está sendo aberta em todas as minhas páginas, em até mesmo páginas que não preciso, não sei no caso se a injeção de dependencia do Spring resolveria isso, ou até mesmo o Jboss Seam, mas pelo oq eu andei conversando com um pessoal que usa o Spring, ele tbm faria a injeção do Session do Hibernate em todas as páginas, seria isso mesmo?

vlw

abs

O Hiberante consegue ler de diversas bases?

Consegue, desde que exista uma sessionFactory pra cada base. Isso consome uma boa quantidade de memoria. A nao ser que haja uma boa razao pra isso que nao foi colocada no post, achei uma pessima ideia um banco pra cada pais.

É, isso me deixou pensativo também.

[quote=Lennon Manchester]
Para que fique mais claro, por exemplo, eu me logando no sistema, ele estaria todo em portuques por causa da internacionalização do meu usuario, e apareceriam os dados meu pais por exemplo Brasil, mas eu teria acesso a informações de outro pais como Argentina, oq na verdade só mudaria o acesso ao banco, pq as tabelas são identicas. [/quote]

Outra coisa que achei curiosa foi o fato do usuário poder ver informações “de outro país”.

Você poderia explicar melhor esta questão Lennon?

flws

A internacionalização vai ser necessaria somente para apresentação, ou existe configurações especificas para cada país?

Bom vou tentar explicar melhor, por exemplo, sendo um sistema de atendimento que trabalhe com 3 paises (BR, AR, US), sendo que exista um núcleo de atendimento em cada páis, certo?
Primeiro, a parte de internacionalização do sistema, se aplica somente a visualização, para que os usuários de diferente páises consigam utilizar o sistema.

Segundo, sobre a parte de um usuário pode acessar informações de outro páises, ao invez de ter um núcleo de antedimento para cada páis, eu poderia ter apenas um para um páis como o US, e poderia que outro núcleo de atendimento que cuidassem do BR/AR, entende? Tbm poderia ter um usuario que teria acesso a todos os paises.

Agora sobre bancos diferentes, foi uma solução que adotaram, ao invés de ter um campo em todas as tabelas para indicar de qual país é cada registro, resolveram separar por banco de dados.

vlw pela atenção,

abs.

Se ja nao é mais possivel voce alterar o modelo de dados pra que use apenas uma base (se for possivel/viavel eu recomendo que faca), entao voce deve procurar quais ferramentas te dao melhor suporte a transacoes com mais de uma base de dados.

Nao sei qual a melhor, nem sei se alguma da, ainda nao precisei de algo assim, mas esse deve ser o seu ponto decisivo na adocao de qualquer ferramento. De resto, das tres que voce citou eu posso falar apenas do spring, que resolve bem os meus problemas. E nao trabalho com aplicacoes muito pequenas nao.

[quote=YvGa]Se ja nao é mais possivel voce alterar o modelo de dados pra que use apenas uma base (se for possivel/viavel eu recomendo que faca), entao voce deve procurar quais ferramentas te dao melhor suporte a transacoes com mais de uma base de dados.

Nao sei qual a melhor, nem sei se alguma da, ainda nao precisei de algo assim, mas esse deve ser o seu ponto decisivo na adocao de qualquer ferramento. De resto, das tres que voce citou eu posso falar apenas do spring, que resolve bem os meus problemas. E nao trabalho com aplicacoes muito pequenas nao.[/quote]

A respeito sobre o modelo de dados trabalhar com diversos databases, acabei de assistir uma palestra falando sobre o Hibernate Shards, uma ferramenta para trabalhar com diversos databases.

http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross;jsessionid=1CF9FA156167F22F67D13B4EACDB63B0

abs