Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Lembro que tinha um tópico aqui no fórum que descrevia sobre a diferença entre MVC1 e MVC2, mas não encontrei. Alguém poderia me dar referências ou dizer qual a diferença entre eles? Obrigada! Martha Christiane
MVC1 existem muitos controllers. Um bom exemplo para isso é a api do swing. MVC2, apenas um controller, ou seja, uma adaptação do padrão MVC1 para aplicações WEB, tendo apenas 1 controller.
MVC1 existem muitos controllers. Um bom exemplo para isso é a api do swing.
Olá senhores, não concordo cm várias coisas neste fórum de MVC1 x MVC2. A primeira delas é: "o swing é um bom exemplo para MVC 1". Swing é uma variação do MVC tradicional do smaltalk. O Swing não separa os componentes em 3 camadas (model, view e controller), mas somente em 2. Ou seja as camadas controller e view foram fundidas e por isso somente a camada modelo está separada. A sun chamou esta nova arquitetura "SMA (separable model architecture)". Todos os componentes do Swing que iniciam com a letra "J" (ex.:JTree, JList, etc) implementam as camadas controller e view. Apenas o modelo é separado nas classes e interfaces do Swing que terminam com a palavra "model" (ex.: TreeModel, DefaultTreeModel, etc). Concluindo minha argumentação: tendo o swing uma grande modificação em relação ao tradicional MVC, não acho que é um bom exemplo para o tradicional MVC. Melhor seria usar a implementação MVC do smalltalk como um bom exemplo.
MVC1 existem muitos controllers. Um bom exemplo para isso é a api do swing. MVC2, apenas um controller, ou seja, uma adaptação do padrão MVC1 para aplicações WEB, tendo apenas 1 controller.
O ponto chave da diferença entre o MVC 1 o MVC 2 realmente é o controller, como o Dalton falou. Porém acho que a declaração acima pode gerar confusão. Nos "blue prints" da Sun existe a explicação oficial para a existência dos dois modelos. O texto original pode ser visto em:
"A terminologia (MVC1 e MVC2) pareceu nos primeiros dos esboços da especificação de JSP, e descreveu dois padrões básicos para o uso das páginas JSP. Os termos desaparecerem da especificação, mas permanecem no uso comum."
"O modelo 1 e o modelo 2 indicam simplesmente à ausência ou à presença (respectivamente) de um servlet controlador que reencaminha as requisições da camada cliente e seleciona as views."
"Uma arquitetura do modelo 1 consiste em um web browser que acessa diretamente páginas JSP da camada web. A pagina JSP acessa os JavaBeans que representam o modelo da aplicação, e a próxima "view" (página de JSP, servlet, HTML PAGE, e assim por diante) é determinada pelos hyperlinks incados explicitamente no código fonte da página atual. O controle de uma aplicação que segue o modelo 1 é descentralizado, porque é a página atual que determina, em seus links, a próxima página. Além disso, cada página JSP ou servlet processam suas próprias entradas (os parâmetros GET ou POST). Em algumas arquiteturas, que seguem o modelo 1, a escolha da página seguinte ocorre no código script da página, mas isto não é recomendado."
"Uma arquitetura que segue o modelo 2, introduz um servlet como controlador entre o browser e as páginas JSP, ou mesmo um servlet que serve como índice para as próximas páginas. O controlador centraliza a lógica de fluxo usada para despachar as requisições levando em conta a URL, os parâmetros da entrada, e o estado da aplicação. O controlador também é responsável pela seleção da "view", desacoplando as páginas JSP do servlet. Aplicações do modelo 2 são mais fáceis de manter e estender, porque as "views" não são diretamente acessadas. O servlet controlador do modelo 2 fornece um único ponto do controle para a segurança e o log da aplicação, e encapsula os dados enviados pela página em um formulário utilizável pelo back-end do modelo MVC. Por estas razões, a arquitetura do modelo 2 é recomendada para a maioria das aplicações interativas."
Como podemos ver tanto o Modelo 1 quanto o Modelo 2 são aplicáveis para WEB. A diferença é o servlet controller.
Porém, pessoalmente, disconcordo quando o modelo 1 é apresentado como uma implementação do pattern MVC, porque como a própria sun adminte a camada controller fica descentraliza e espalhada pelas páginas JSP. Para mim isto, não é um controller, é um erro. Acredito que só existe o termo MVC 2 porque no início alguém implementou errado o pattern. Se não me falha a memória (lá por 1999) os primeiros drafts do apache struts implementavam o modelo 1. Mas isto é apenas uma especulação baseada na minha opinião pessoal.
Eu não quis dizer que o MVC2 é unicamente aplicável para a WEB (desculpe se eu me fiz entender assim), e o que eu tentei expor para o autor do tópico, é que a implementação do modelo 1 não chega nem ser aconselhado para uma aplicações web, ao contrário do que fez o Craig McClanahan na versão 0.50 do Struts em meados de 2000, quando as tags eram distribuídas pelas páginas e sequer havia um controller para a distribuição destas páginas, ficando assim o fluxo no próprio formulário dos HTMLs (<input type="hidden" name="forward" value="page2.jsp"> ).
Eu não quis dizer que o MVC2 é unicamente aplicável para a WEB (desculpe se eu me fiz entender assim), e o que eu tentei expor para o autor do tópico, é que a implementação do modelo 1 não chega nem ser aconselhado para uma aplicações web, ao contrário do que fez o Craig McClanahan na versão 0.50 do Struts em meados de 2000, quando as tags eram distribuídas pelas páginas e sequer havia um controller para a distribuição destas páginas, ficando assim o fluxo no próprio formulário dos HTMLs (<input type="hidden" name="forward" value="page2.jsp"> ).
Bom, é isso.
Ei Dalton, onde na WEB consigo esta informação da versão 0.5 do Struts? Vc tem a URL? Eu lembrava de algo assim, mas quando procurei não achei.
_________________
Sandro Bihaiko www.jsenna.org
Eu não quis dizer que o MVC2 é unicamente aplicável para a WEB (desculpe se eu me fiz entender assim), e o que eu tentei expor para o autor do tópico, é que a implementação do modelo 1 não chega nem ser aconselhado para uma aplicações web, ao contrário do que fez o Craig McClanahan na versão 0.50 do Struts em meados de 2000, quando as tags eram distribuídas pelas páginas e sequer havia um controller para a distribuição destas páginas, ficando assim o fluxo no próprio formulário dos HTMLs (<input type="hidden" name="forward" value="page2.jsp"> ).
Bom, é isso.
Ei Dalton, onde na WEB consigo esta informação da versão 0.5 do Struts? Vc tem a URL? Eu lembrava de algo assim, mas quando procurei não achei.
Sandro, na época eu trabalhava justamente com JSP + JavaBeans, eu era um dos 10 desenvolvedores de uma empresa que terceirava sistemas para a BRT. E com isso, nosso arquiteto naquela época, resolveu partir para algo novo, e eu fui um dos desenvolvedores que ficou encarregado de desenvolver o framework da empresa baseado no Struts (ainda beta), pois nosso gerente de TI não queria framework nenhum em versões beta para serem colocados em nossos clientes. Então estudamos a especificação do struts naquele tempo e implementamos (com algumas modificações, é claro).
marthakiu Offline
Posts: 2
Lembro que tinha um tópico aqui no fórum que descrevia sobre a diferença entre MVC1 e MVC2, mas não encontrei.
Alguém poderia me dar referências ou dizer qual a diferença entre eles?
Obrigada!
Martha Christiane
daltoncamargo Offline
Posts: 8759
MVC1 existem muitos controllers. Um bom exemplo para isso é a api do swing.
MVC2, apenas um controller, ou seja, uma adaptação do padrão MVC1 para aplicações WEB, tendo apenas 1 controller.
Para saber mais sobre MVC2:
http://www.javafree.org/javabb/viewtopic.jbb?t=7108
http://www.javafree.com.br/forum/viewtopic.php?t=1099
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
vfpamp Offline
Posts: 6007
Se não me engano o MVC2 também não tem Observers entre visão e model, certo?
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
daltoncamargo Offline
Posts: 8759
E nem tem o porque
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
Anunciante
marthakiu Offline
Posts: 2
Obrigada pessoal!
me ajudaram bastante!
Grata
Martha Christiane
bihaiko Offline
Posts: 15
Olá senhores, não concordo cm várias coisas neste fórum de MVC1 x MVC2. A primeira delas é: "o swing é um bom exemplo para MVC 1". Swing é uma variação do MVC tradicional do smaltalk. O Swing não separa os componentes em 3 camadas (model, view e controller), mas somente em 2. Ou seja as camadas controller e view foram fundidas e por isso somente a camada modelo está separada. A sun chamou esta nova arquitetura "SMA (separable model architecture)". Todos os componentes do Swing que iniciam com a letra "J" (ex.:JTree, JList, etc) implementam as camadas controller e view. Apenas o modelo é separado nas classes e interfaces do Swing que terminam com a palavra "model" (ex.: TreeModel, DefaultTreeModel, etc). Concluindo minha argumentação: tendo o swing uma grande modificação em relação ao tradicional MVC, não acho que é um bom exemplo para o tradicional MVC. Melhor seria usar a implementação MVC do smalltalk como um bom exemplo.
para quem tiver curiosidade (ou mesmo duvidarem do q que estou falando), olhem diretamente na sun:
http://java.sun.com/products/jfc/tsc/articles/architecture/
Tenho mais alguns pontos deste fórum que não concordo e que pretendo comentar posteriormente para poder escutar as suas opiniões.
Um abraço a Todos
t+
Sandro Bihaiko
_________________
Sandro Bihaiko
www.jsenna.org
vfpamp Offline
Posts: 6007
De fato, Swing não é um bom exemplo de MVC até porque poucas pessoas sabem como o Swing trabalha internamente.
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
bihaiko Offline
Posts: 15
O ponto chave da diferença entre o MVC 1 o MVC 2 realmente é o controller, como o Dalton falou. Porém acho que a declaração acima pode gerar confusão. Nos "blue prints" da Sun existe a explicação oficial para a existência dos dois modelos. O texto original pode ser visto em:
http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html
Eu traduzi alguns parágrafos do texto:
"A terminologia (MVC1 e MVC2) pareceu nos primeiros dos esboços da especificação de JSP, e descreveu dois padrões básicos para o uso das páginas JSP. Os termos desaparecerem da especificação, mas permanecem no uso comum."
"O modelo 1 e o modelo 2 indicam simplesmente à ausência ou à presença (respectivamente) de um servlet controlador que reencaminha as requisições da camada cliente e seleciona as views."
"Uma arquitetura do modelo 1 consiste em um web browser que acessa diretamente páginas JSP da camada web. A pagina JSP acessa os JavaBeans que representam o modelo da aplicação, e a próxima "view" (página de JSP, servlet, HTML PAGE, e assim por diante) é determinada pelos hyperlinks incados explicitamente no código fonte da página atual. O controle de uma aplicação que segue o modelo 1 é descentralizado, porque é a página atual que determina, em seus links, a próxima página. Além disso, cada página JSP ou servlet processam suas próprias entradas (os parâmetros GET ou POST). Em algumas arquiteturas, que seguem o
modelo 1, a escolha da página seguinte ocorre no código script da página,
mas isto não é recomendado."
"Uma arquitetura que segue o modelo 2, introduz um servlet como controlador entre o browser e as páginas JSP, ou mesmo um servlet que serve como índice para as próximas páginas. O controlador centraliza a lógica de fluxo usada para despachar as requisições levando em conta a URL, os parâmetros da entrada, e o estado da aplicação. O controlador também é responsável pela seleção da "view", desacoplando as páginas JSP do servlet. Aplicações do modelo 2 são mais fáceis de manter e estender, porque as "views" não são diretamente acessadas. O servlet controlador do modelo 2 fornece um único ponto do controle para a segurança e o log da aplicação, e encapsula os dados enviados pela página em um formulário utilizável pelo back-end do modelo MVC. Por estas razões, a arquitetura do modelo 2 é recomendada para a maioria
das aplicações interativas."
Como podemos ver tanto o Modelo 1 quanto o Modelo 2 são aplicáveis para WEB. A diferença é o servlet controller.
Porém, pessoalmente, disconcordo quando o modelo 1 é apresentado como uma implementação do pattern MVC, porque como a própria sun adminte a camada controller fica descentraliza e espalhada pelas páginas JSP. Para mim isto, não é um controller, é um erro. Acredito que só existe o termo MVC 2 porque no início alguém implementou errado o pattern. Se não me falha a memória (lá por 1999) os primeiros drafts do apache struts implementavam o modelo 1. Mas isto é apenas uma especulação baseada na minha opinião pessoal.
Um Abraço a Todos
sandro bihaiko
_________________
Sandro Bihaiko
www.jsenna.org
daltoncamargo Offline
Posts: 8759
Eu não quis dizer que o MVC2 é unicamente aplicável para a WEB (desculpe se eu me fiz entender assim), e o que eu tentei expor para o autor do tópico, é que a implementação do modelo 1 não chega nem ser aconselhado para uma aplicações web, ao contrário do que fez o Craig McClanahan na versão 0.50 do Struts em meados de 2000, quando as tags eram distribuídas pelas páginas e sequer havia um controller para a distribuição destas páginas, ficando assim o fluxo no próprio formulário dos HTMLs (<input type="hidden" name="forward" value="page2.jsp"> ).
Bom, é isso.
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
bihaiko Offline
Posts: 15
Ei Dalton, onde na WEB consigo esta informação da versão 0.5 do Struts? Vc tem a URL? Eu lembrava de algo assim, mas quando procurei não achei.
_________________
Sandro Bihaiko
www.jsenna.org
daltoncamargo Offline
Posts: 8759
Sandro, na época eu trabalhava justamente com JSP + JavaBeans, eu era um dos 10 desenvolvedores de uma empresa que terceirava sistemas para a BRT. E com isso, nosso arquiteto naquela época, resolveu partir para algo novo, e eu fui um dos desenvolvedores que ficou encarregado de desenvolver o framework da empresa baseado no Struts (ainda beta), pois nosso gerente de TI não queria framework nenhum em versões beta para serem colocados em nossos clientes. Então estudamos a especificação do struts naquele tempo e implementamos (com algumas modificações, é claro).
Later!
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
Spellcaster Offline
Posts: 14
olahHH
desviando um poko do assunto...mas nem tanto......
em se tratando de aplicações desktop .....duas camadas...uma para a interface grafica e outra para a logica de negocio são mais do que sufientes....
agora minha duvida.....pa q serve a camada model???.....
_________________
JavaFree.org
daltoncamargo Offline
Posts: 8759
Dá uma lida neste tópico:
http://www.javafree.org/javabb/viewtopic.jbb?t=12723
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
Relacionados
MVC e MVC2 http://javafree.uol.com.br/topic-5477-MVC-e-MVC2.html WebWork aderindo ao Struts TI http://javafree.uol.com.br/topic-852650-WebWork-aderindo-ao-Struts-TI.html
Anunciante