| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 09:00:37
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Em um projeto que estou trabalhando, surgiu uma dúvida e gostaria da opinião do pessoal daqui do fórum.
Tenho várias classes de negócio que produzem objetos que facilmente são serializados em JSON. Tenho servlets (sempre invocados via AJAX) que são usados apenas como adapters sobre as classes de negócio subjacentes. Esses servlets dificilmente ultrapassam 20 linhas de código (incluindo imports, comentários e tudo mais), eles apenas leem os parâmetros da requisição, mandam para a classe de negócio e colocam o resultado no response. No response, esses servlets podem gerar uma dessas duas coisas:
1) JSON puro, que será processado no cliente (um browser) que cria <div>s e <span>s dinamicamente e os coloca na página.
2) A HTML pronta dos <div>s e <span>s (gerados por um JSP), no browser, o javascript simplesmente acrescenta esse resultado dentro de uma <div> usando o innerHTML.
Já testei ambas as formas, e as duas produzem o mesmo resultado e funcionam muito bem, no entanto gostaria de colocar as diferenças na balança:
A forma 1 é mais leve, gera menos tráfego de rede e demora menos tempo para ser processada no servidor, pois boa parte do processamento (layout e formatação) fica no cliente.
No entanto, do lado do cliente, o código fica bem complexo e a manutenibilidade é ruim, pois há um monte de javascript montando a página dinamicamente.
A forma 2 é mais simples do lado do cliente, pois basta uma linha de código para colocá-la no layout, mas demora mais no servidor. No entanto, no servidor tenho apenas um JSP simples e a manutenibilidade é legal.
Há também uma forma híbrida destas duas, criar um JSON que contém em algum campo a HTML pronta. Mas, não sei se isso é boa ideia.
Outra coisa, é que no futuro pretendo reutilizar os JSONs gerados para criar webservices.
Eu pessoalmente, sou mais inclinado a ir para a forma 1, apesar de ser algo completamente fora do padrão (ou talvez inovador se você ver de uma forma diferente). Mas, gostaria de coletar as opiniões dos demais colegas do fórum.
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 09:45:59
|
rodrigo.ferreira
JavaGuru
![[Avatar]](/images/avatar/0d55e009fa8e9e8ec97aa091dfaa28e0.jpg)
Membro desde: 28/08/2008 20:38:07
Mensagens: 200
Offline
|
Que belo problema ein? rsrsrs
Acho que as duas alternativas são legais, se bem implementadas... porém, em minha humilde opinião...
Acho legal evitar o tráfego no servidor... prefiro a opção da pré-validação através de JavaScript no cliente... por que isso evita idas-e-vindas e tráfego extra... Se pensarmos que o seu sistema pode aumentar... e ser utilizado por muito mais usuários no futuro... seria interessante evitar este tipo de tráfego desnecessário no servidor. O legal seria centralizar a geração deste código que é devolvido para o cliente... e então, a manutenção fica clara e objetiva... por que todos os clientes recebem esta informação dinamicamente através dos seus servlets... de um único e bem definido local... e fazem o processamento de validação localmente, sem exigir recursos de rede, e só então, submetam o conteúdo para o servidor.
Abraço,
|
Rodrigo Lopes Ferreira
Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5
Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP
Pós Graduando em Desenvolvimento de Sistemas em Software Livre - Universidade Católica de Brasília |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 09:56:56
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
victorwss wrote:No entanto, do lado do cliente, o código fica bem complexo e a manutenibilidade é ruim, pois há um monte de javascript montando a página dinamicamente.
Eu diria que o problema está aqui. Se o código do lado do cliente é complexo, ruim de manter, então esse código em JS é ruim. Ponto. Hora de dar um upgrade nas tuas habilidades de como escrever JavaScript, além de sair atrás de frameworks fáceis de usar que façam esse trabalho.
Sobre qual o melhor, eu considero AJA(JSON) "A" maneira certa de fazer comunicações desse tipo entre clientes e servidores.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 10:06:43
|
cmoscoso
Virtual Machine Man
Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline
|
se vc pretende gerar webservice disto eu sugiro mandar JSON ou entao microformatos, que basicamente sao "divs & spans" embutidos num documento XHTML.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 10:44:54
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Existem componentes js que trabalham direto com JSON, portanto pense seriamente em usar libs como prototype, jquery, yui, sua view ficará mais fácil de manter e ainda assim podera ter seus webservices restfull com os JSON gerados.
No site do VRaptor tem exemplo de como usar prototype:
http://www.vraptor.org/pt/ajax.html
Voce pode montar grids, combos, etc tudo com componentes que trabalham em cima do JSON.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 11:11:37
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Respondendo a todos vocês.
Realmente, quanto ao javascript, eu havia esquecido sobre o JQuery, que não está sendo usado no momento. O JQuery será acrescido ao projeto em breve, quiçá ele deverá atenuar o problema da complexidade do javascript e deixá-lo bem mais fácil, apesar de não se comparar a simplicidade do JSP, mas a manutenibilidade já será muito boa.
Placar por enquanto:
JSON+javascript 5 x 0 JSP
This message was edited 2 times. Last update was at 17/03/2009 11:18:20
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
|
|
|
|