Forum Main Page > Ferramentas, APIs e Frameworks

Diferença entre MVC1 e MVC2

Goto page 1

New Topic    Reply Message


  1. marthakiu
    Offline
    Posts: 2

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. daltoncamargo
    Offline
    Posts: 8759

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. vfpamp
    Offline
    Posts: 6007

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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.




  1. daltoncamargo
    Offline
    Posts: 8759

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    vfpamp:
    Se não me engano o MVC2 também não tem Observers entre visão e model, certo?


    E nem tem o porque
    _________________
    Dalton Camargo

    JavaFree | Dalton Camargo

    A Vitrine do seu Blog de Tecnologia




  1. Anunciante

    Comment Arrow




  1. marthakiu
    Offline
    Posts: 2

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    Obrigada pessoal!
    me ajudaram bastante!
    Grata
    Martha Christiane




  1. bihaiko
    Offline
    Posts: 15

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    daltoncamargo:
    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.

    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




  1. vfpamp
    Offline
    Posts: 6007

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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.




  1. bihaiko
    Offline
    Posts: 15

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    daltoncamargo:
    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:

    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




  1. daltoncamargo
    Offline
    Posts: 8759

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. bihaiko
    Offline
    Posts: 15

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    daltoncamargo:
    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




  1. daltoncamargo
    Offline
    Posts: 8759

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    bihaiko:

    daltoncamargo:
    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).

    Later!
    _________________
    Dalton Camargo

    JavaFree | Dalton Camargo

    A Vitrine do seu Blog de Tecnologia




  1. Spellcaster
    Offline
    Posts: 14

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. daltoncamargo
    Offline
    Posts: 8759

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    Spellcaster:
    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???.....



    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




  1. Relacionados




  1. Anunciante





New Topic    Reply Message     Forum Main Page -> Ferramentas, APIs e Frameworks


Goto page 1