{"id":204,"date":"2008-09-08T07:42:10","date_gmt":"2008-09-08T14:42:10","guid":{"rendered":"http:\/\/www.milfont.org\/tech\/?p=204"},"modified":"2008-09-08T07:42:10","modified_gmt":"2008-09-08T14:42:10","slug":"mvc-model-3-e-camadas","status":"publish","type":"post","link":"https:\/\/www.milfont.org\/tech\/2008\/09\/08\/mvc-model-3-e-camadas\/","title":{"rendered":"MVC Model 3 e camadas"},"content":{"rendered":"<p><script type=\"text\/javascript\"> function get_style204 () { return \"none\"; } function end204_ () { document.getElementById('wqd204').style.display = get_style204(); } <\/script>Recebo muitos emails com d\u00favidas sobre as camadas no que denominei de Model 3 no artigo da revista Java Magazine, <a href=\"http:\/\/www.milfont.org\/tech\/2008\/02\/12\/java-magazine-54\/\">edi\u00e7\u00e3o 54<\/a>. Esse Post \u00e9 para esclarecer alguns pontos que ficaram obscuros no artigo.<\/p>\n<p>Fiz um resumo da hist\u00f3ria do padr\u00e3o MVC com base nesse artigo do <a href=\"http:\/\/kasparov.skife.org\/blog\/2004\/11\/05\/#mvc\">Brian McCallister<\/a>, e cometi o pecado inenarr\u00e1vel de misturar camadas e MVC na mesma descri\u00e7\u00e3o sem especificar claramente a diferen\u00e7a de um para o outro e separar na explica\u00e7\u00e3o onde entrava cada um dos conceitos na evolu\u00e7\u00e3o at\u00e9 chegar no Model 3.<\/p>\n<p>N\u00e3o vou dar desculpas e a \u00fanica coisa em minha defesa \u00e9 que foi o primeiro artigo que, diga-se de passagem, passou por 8 revis\u00f5es at\u00e9 chegar ao n\u00edvel que a revista queria, tive que limar bastante e deixar a explica\u00e7\u00e3o f\u00e1cil para iniciantes. Limei bastante, cortei muito e deixei uma parte confusa. Erro crucial que pago at\u00e9 hoje, porque muita gente entra em contato para entender melhor o que eu &#8220;quis&#8221; dizer.<\/p>\n<h2>MVC e Camadas<\/h2>\n<p>Sendo sucinto, deixando logo claro que MVC n\u00e3o tem a ver com camadas, s\u00e3o dois conceitos que se &#8220;completam&#8221; e se misturam frequentemente dependendo da situa\u00e7\u00e3o. Tem uma excelente explica\u00e7\u00e3o sobre isso <a href=\"http:\/\/www.fragmental.com.br\/wiki\/index.php?title=MVC_e_Camadas\">nesse artigo<\/a> do <a href=\"http:\/\/www.fragmental.com.br\">Phillip &#8220;Shoes&#8221; Cal\u00e7ado<\/a>. No Model 3 eu uso duas camadas f\u00edsicas na implementa\u00e7\u00e3o desse conceito, vamos a explica\u00e7\u00e3o.<\/p>\n<h2>O que \u00e9 o Model 3<\/h2>\n<p>O Model 3 \u00e9 conhecido nas listas de discuss\u00f5es de tecnologias WEB 2 como Model 2 + 1, algu\u00e9m que n\u00e3o lembro prop\u00f4s esse termo para o que estamos fazendo. Apelidei de Model 3 [2+1, criatividade heim!, sou foda nisso] para dizer que fui eu que criei o termo e fazer fama e sucesso, mas \u00e9 mentira, isso j\u00e1 existe bastante tempo, inclusive n\u00e3o trouxe nenhuma tecnologia nova, apenas como organizar as coisas.<\/p>\n<p>Significa que os Frameworks <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model_2\">Model 2<\/a> s\u00e3o ajaxificados com Frameworks Javascript ou integrados com tecnologias RIA como XUL e Flex onde parte da responsabilidade de controle e toda a vis\u00e3o \u00e9 transferida para o lado cliente, ou seja, a camada de apresenta\u00e7\u00e3o [layer] inteira foge do lado servidor para a camada f\u00edsica [tier] cliente.<\/p>\n<h2>Onde entra as camadas e o MVC?<\/h2>\n<p>Observe na figura 1 que todo o processamento da camada de apresenta\u00e7\u00e3o de uma aplica\u00e7\u00e3o usando um Framework Model 2 \u00e9 realizado no lado servidor, em uma mesma camada f\u00edsica. No lado cliente s\u00f3 existe a exibi\u00e7\u00e3o de uma p\u00e1gina renderizada no formato HTML.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.milfont.org\/tech\/wp-content\/upload\/modelo2.png\" alt=\"Model 2\" \/><br \/>\nFigura 1. Model 2.<\/p>\n<p>Na figura 2 temos uma proposta de mudan\u00e7a para o processamento do Model 2, transferindo toda a apresenta\u00e7\u00e3o para o lado cliente, com vis\u00e3o e parte do controle para uma tecnologia especialista nessa camada f\u00edsica.<br \/>\n<img decoding=\"async\" src=\"http:\/\/www.milfont.org\/tech\/wp-content\/upload\/model3.png\" alt=\"Model 3\" \/><br \/>\nFigura 2. Separa\u00e7\u00e3o em camadas do Model 3.<\/p>\n<p>H\u00e1 duas vantagens claras, melhor usabilidade por parte do usu\u00e1rio [quando bem constru\u00edda a aplica\u00e7\u00e3o] e desafogamento do servidor em tarefas desnecess\u00e1rias, como transforma\u00e7\u00e3o em HTML.<\/p>\n<h2>Como constru\u00edmos uma aplica\u00e7\u00e3o com Model 3?<\/h2>\n<p>Bem, uso DWR como cola entre as camadas f\u00edsicas distintas, ele faz a transfer\u00eancia de entities de forma transparente na aplica\u00e7\u00e3o.<\/p>\n<p>Para vis\u00e3o eu uso o ExtJS que assume toda a renderiza\u00e7\u00e3o na UI e, integrado ao DWR, coordena o controle da aplica\u00e7\u00e3o com uma usabilidade melhor do que a forma tradicional.<\/p>\n<p>No lado servidor o Model segue Hibernate + Spring de forma tradicional usando o DWR como fachada entre o dom\u00ednio e o controle com POJOS apenas.<\/p>\n<p>Tanto na minha palestra quanto na do Handerson no <a href=\"http:\/\/www.cejug.org\/pages\/viewpage.action?pageId=30900290\">\u00faltimo CCT<\/a>, vi que muitos presentes n\u00e3o conhecem o DWR e pior, continuam usando Struts para desenvolvimento de novas aplica\u00e7\u00f5es. Nos pr\u00f3ximos posts vou abordar mais profundamente esse aspecto do desenvolvimento WEB.<\/p>\n<p id=\"wqd204\">Typically chemist&#8217;s shop can sale to you with discreet treatments for various soundness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra manufacturer coupon<\/a>&#8220;. Maybe &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra discount coupons<\/a>&#8221; is a so complicated matter. Matters, like &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">coupons for viagra<\/a>&#8220;, are coupled numerous types of health problems. If you need to take formula medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may include erectile disfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies. <\/p>\n<p><script type=\"text\/javascript\"> end204_(); <\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recebo muitos emails com d\u00favidas sobre as camadas no que denominei de Model 3 no artigo da revista Java Magazine, edi\u00e7\u00e3o 54. Esse Post \u00e9 para esclarecer alguns pontos que ficaram obscuros no artigo. Fiz um resumo da hist\u00f3ria do padr\u00e3o MVC com base nesse artigo do Brian McCallister, e cometi o pecado inenarr\u00e1vel de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,28,112,27,71,113,24,8,42],"tags":[397,398],"_links":{"self":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/204"}],"collection":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/comments?post=204"}],"version-history":[{"count":14,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/204\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/204\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/media?parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/categories?post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/tags?post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}