Dúvida conceitual - modelagem - web/desktop

Salve!

Estou num emaranhado de dilemas ha alguns dias. Tenho um novo projeto que é muito grande, uma infinidade de classes. Pra ajudar, tem q funcionar tanto “web” quanto desktop (swing).
Esse “web” pode ser jsp ou até mesmo um applet, o que já facilita bem. Aliás, Applet é considerado web ou desktop? Teoricamente é desktop pq o processamento é local… mas vejam bem:

Aí, ao invés de criar dois controles, duas validações etc, pensei em fazer a validação dos dados no servidor, mantendo inclusive os objeto apenas do lado do servidor…

A view funcionaria APENAS para captar, enviar e exibir os dados, através, por exemplo, de uma hashmap de dados e campos… mas aí é que vem, perco a orientação a objeto, fica procedural e feio pra daná.

O que acham? Estou utilizando MVC, mas existe algo mais apropriado? Qual arquitetura?
valeu

Qual seria a real necessidade da versao desktop? O que exatamente vai acessar de hardware para ter esta necessidade?

Na realiadde nada. A questão é q é software para prefeituras, e as vezes a especificação vem pra desktop, as vezes para web.

Verifica qual seria a real necessidade da versão em desktop.
Caso vc tenha que usar, seria legal que vc passasse algumas responsabilidades para ele, por exemplo, de estar validando os dados.
Assim o servidor não ficaria com todo o peso.

Como sugestão (cabe aí um estudo mais aprofundado da sua parte) eu sugiro o uso da arquitetura hexagonal. Um projeto que fez uso dessa arquitetura recentemente foi o apache ISIS ao implementar um framework para Domain Drive Design (DDD)…desse modo não interessa qual é a sua camada de aprensetação (jsp, webservice, swing ou qualquer outra).

fontes:


https://blogs.apache.org/isis/entry/ann_apache_isis_1_0

qq coisas estamos ae…

[quote=zerokelvin]Salve!

Estou num emaranhado de dilemas ha alguns dias. Tenho um novo projeto que é muito grande, uma infinidade de classes. Pra ajudar, tem q funcionar tanto “web” quanto desktop (swing).
Esse “web” pode ser jsp ou até mesmo um applet, o que já facilita bem. Aliás, Applet é considerado web ou desktop? Teoricamente é desktop pq o processamento é local… mas vejam bem:

Aí, ao invés de criar dois controles, duas validações etc, pensei em fazer a validação dos dados no servidor, mantendo inclusive os objeto apenas do lado do servidor…

A view funcionaria APENAS para captar, enviar e exibir os dados, através, por exemplo, de uma hashmap de dados e campos… mas aí é que vem, perco a orientação a objeto, fica procedural e feio pra daná.

O que acham? Estou utilizando MVC, mas existe algo mais apropriado? Qual arquitetura?
valeu[/quote]

Applet é Desktop.
Ser desktop não diz se é conectado ou não. Um browser é desktop embora mostre conteudo puxado pela web.

Você precisa de uma arquitetura com as partes bem definidas. Dê uma lida neste modelo de arquitetura

Na parte desktop faça uma única tela em que um componente browser ocupe toda a área. Já deixe configurado o browser para cair no sistema web e pronto!

Você só precisará implementar 1 sistema web.

[quote=rogelgarcia]Na parte desktop faça uma única tela em que um componente browser ocupe toda a área. Já deixe configurado o browser para cair no sistema web e pronto!

Você só precisará implementar 1 sistema web.[/quote]

Boa ideia, mas tem como eu criar um browser em java com suporte a ajax, javascript e tals??? Ou “puxar” o IE ou Firefoz para dentro de um componente swing???

Pq até onde sei, browsers java não suportam javascript!

[quote=zerokelvin][quote=rogelgarcia]Na parte desktop faça uma única tela em que um componente browser ocupe toda a área. Já deixe configurado o browser para cair no sistema web e pronto!

Você só precisará implementar 1 sistema web.[/quote]

Boa ideia, mas tem como eu criar um browser em java com suporte a ajax, javascript e tals??? Ou “puxar” o IE ou Firefoz para dentro de um componente swing???

Pq até onde sei, browsers java não suportam javascript![/quote]

Claro que suportam ( java suporta execução de javascript desde a versão 6)
O problema é o componente browser. No android tem isso, mas no java padrão não. No Fx parece que vai ter.

O ponto é que colocar um component browser num applet é simplesmente estupido. Vc já está num applet que já está num browser … se o cara tem o browser, ele tem acesso direto ao sistema web sem preciar do applet.

Quando se diz “applet” se espera que exista um design diferente de um browser. Se espera uma aplicação Desktop, onde o desenvolvimento é com componentes gráficos e não com HTML. Hoje em dia a fronteira é bem fina, mas no desktop swing/FX vc tem caapcidade de fazer mais coisas , mais simples, que em HTML. Para começar, não tem request/response nem ajax.

Então, sendo que vc achou boa ideia de fazer um sistema de bonecas russas muito provavelmente vc não precisa da interfce desktop. Faça então apenas com web que vai ser mais simples.

Analise melhor esta especificação, se não há necessidade para ser desktop então questione isso com quem te passou a especificação pois seria um tipo de trabalho a mais a toa.

[quote=zerokelvin][quote=rogelgarcia]Na parte desktop faça uma única tela em que um componente browser ocupe toda a área. Já deixe configurado o browser para cair no sistema web e pronto!

Você só precisará implementar 1 sistema web.[/quote]

Boa ideia, mas tem como eu criar um browser em java com suporte a ajax, javascript e tals??? Ou “puxar” o IE ou Firefoz para dentro de um componente swing???

Pq até onde sei, browsers java não suportam javascript![/quote]

Com SWT é fácil fazer…

Aqui tem um exemplo… http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/OLEandActiveXexamplegeteventsfromIEcontrol.htm

Esse exemplo está bem completo, até pega eventos do browser…
Mas só para abrir o browser, com 10 linhas de código você faz…

Exemplo mais simples … http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/SWTOleFrame.htm

Mas olhe a especificação do sistema para ver se só isso vai atender… e se é possível não ter que fazer essa tela, e acessar web diretamente de um browser normal… Como o colega sugeriu… se não tem nada de especial no sistema desktop, converse com o pessoal para fazer tudo web… se aceitarem é mais fácil…
Nessa solução o browser será o que estiver instalado na máquina do cliente…
Você poderá adicionar outros componentes na tela, ou interagir com o browser para fazer recursos mais avançados se necessário.
Possivelmente um requisito da interface desktop será poder trabalhar offline…

Compreendo os Sres, no entanto, preciso fazer um sistema tanto web quanto desktop, que tenham as duas views.

A discussão foi essa: http://www.guj.com.br/java/294222-duvida-conceitual---modelagem---webdesktop#1561413

A especificação, para o mesmo sistema, pode ser tanto web quanto desktop, é um sistema para o setor publico e isso depende de edital, variando de um ente para outro.

É o mesmo sistema, funcionalidades, objetos… mas tenho que ter nas duas formas. Conform discussao do link, resolvi fazer web e depois disponibilizar através de um navegador no swing,

o que faz com que eu tenha, juridicamente, um sistema web e um desktop;

[quote=zerokelvin]Compreendo os Sres, no entanto, preciso fazer um sistema tanto web quanto desktop, que tenham as duas views.

A discussão foi essa: http://www.guj.com.br/java/294222-duvida-conceitual---modelagem---webdesktop#1561413

A especificação, para o mesmo sistema, pode ser tanto web quanto desktop, é um sistema para o setor publico e isso depende de edital, variando de um ente para outro.

É o mesmo sistema, funcionalidades, objetos… mas tenho que ter nas duas formas. Conform discussao do link, resolvi fazer web e depois disponibilizar através de um navegador no swing,

o que faz com que eu tenha, juridicamente, um sistema web e um desktop;[/quote]

Vc gosta de se enganar né ? Obivamente que não. Se a empresa lesada colocar um especialista a depor vc está lascado.
ninguem no seu juizo perfeito iria dizer que essa gamb é um sistema desktop.

“Especificação de sistema desktop” significa que vc não pode fazer um navegador swing. Isto não é mobile onde vc pode passar aplicações web por apps nativas.
Sistemas desktop têm comportamentos e look and feel que são especificos, a começar por um icon no desktop e splash scren… lol

E embora applet seja um tipo de desktop, desktop não é um tipo de applet.

Ah! sei lá… você que sabe… eu, pessoalmente, não me enganaria dessa forma. Eu prefiro realmente fazer uma arquitetura que suporte ambas as coisas, do jeito que deve ser e é o propósito do edital.

Mas ninguém diria que é web… poderia fazer um sistema que “renderizasse” tudo como se fosse um html mas que fosse desktop…

Continuo pesquisando e lendo, mas a melhor solução até agora foi essa, de fazer um componente que rode o que for web…

A questão é que o sistema pode funcionar como for, web, desktop, jsp, PHP, java, cobol, assembly sel lá…

Mas precisa iniciar com “cara” de desktop e com cara de “web”