MVC, Modelo de Arquitetura ou Design Pattern?

33 respostas
R

Olá Senhores,

Pode parecer um pouco lógico e claro assunto, porém aqui na empresa e entre amigos gerou muita discussão sobre o assunto,
Alguns falam que é um Desing Pattern, outros dizem que é apenas um modelo de arquitetura que pode ser seguido.

Gostaria de saber a opinião de vocês, e se possível com referências.

Abraços
\o/

33 Respostas

D

Segundo o brother do cv, é um pattern.

Mas eu corcordo, pra mim essa discussão que vocês entraram não tem a menor lógica… :stuck_out_tongue:

G

Architecture Pattern

Um Abraco.

J

Arquitetura de disposição das camadas da sua aplicação.

Z

acredito que seja os dois!

na verdade é um padrão arquitetural para a organização de suas camadas!

Querendo ou não o MVC é um padrão que trabalha na organização de do seu projeto em alto nivel digamos assim.

M

:XD: Padrões de Projetos (Criação, Comportamento, Estrutura) Orientado a Arquitetura, Visão FrameWork implementação de separação de responsabilidade n-tier ou outro Aspecto orientado ao Business Core do Cliente.

:idea: Alguem já leu esse livro :wink:

P

EMHO,

acredito ser um pattern também, uma vez que ele defende não uma forma arquitetural da aplicação e sim, como e somente COMO a comunicação entre camadas deve ser feita para estar dentro de boas práticas, visando todas as N *.dades. Opa… “deve ser feita” … :smiley: é um design pattern!

F

MVC e camadas são coisas bem diferentes.

Camadas dizem como agrupar os componentes.
MVC diz como interagem os componentes.

Extraído: http://www.fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

R

Modelos de arquitetura são patterns, já que são soluções documentadas para problemas recorrentes. Você pode criar uma distinção entre estes patterns de alto nível e design patterns como Decorator e Facade, mas para mim essa distinção é artificial.

P

fabiocsi:
MVC e camadas são coisas bem diferentes.

Camadas dizem como agrupar os componentes.
MVC diz como interagem os componentes.

Extraído: http://www.fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

Podemos considerar também, que uma arquitetura na verdade é um conjunto de padrões de projetos, documentação, organização, engenharia e padronizaçães, dentre vários outros fatores…

Q

Vamos analisar primeiramente oq é Design Pattern ?

“São padrões de projetos, que definem uma solução referente há algum problema que constantemente ocorre em sistemas OO”

MVC surgiu com esse intuito…
Este padrão especifíca a parte arquitetural de seu sistema, diferente de padrões mais conhecidos (singleton, façade, factory…)

Mas não deixa de ser um Padrão de Projetos (Design Pattern)

:wink:

Q

O problema é que o pessoal acaba ligando o conceito de Design Patterns aos padrões definidos pelo GoF…

F

dreamspeaker:

Mas eu concordo, pra mim essa discussão que vocês entraram não tem a menor lógica… :stuck_out_tongue:

eu tb concordo com o que ele concordou… rs rs rs

e pra min MVC é um modelo de arquitetura…


FLwS

P

dreamspeaker:

Mas eu concordo, pra mim essa discussão que vocês entraram não tem a menor lógica… :stuck_out_tongue:

há diferenças

P

Quinger:
Vamos analisar primeiramente oq é Design Pattern ?

“São padrões de projetos, que definem uma solução referente há algum problema que constantemente ocorre em sistemas OO”

MVC surgiu com esse intuito…
Este padrão especifíca a parte arquitetural de seu sistema, diferente de padrões mais conhecidos (singleton, façade, factory…)

Mas não deixa de ser um Padrão de Projetos (Design Pattern)

:wink:

podemos chamar então de um conventional design pattern… mas de arquitetura ñ… arquitetura envolve outras coisas INCLUSIVE design patterns…

in-off:
te mandei uma MP… veja aew…

Z

Architectural Pattern

Q

peerless:

podemos chamar então de um conventional design pattern… mas de arquitetura ñ… arquitetura envolve outras coisas INCLUSIVE design patterns…

in-off:
te mandei uma MP… veja aew…

dê uma olhada no link do “zinho” ai em cima.

e depois leia aqui: MVC

Não falei que é uma “Arquitetura”. É um padrão arquitetural…

P

LOGO, podemos concluir que, estamos falando sobre a MESMA coisa de maneiras DIFERENTES.

http://c2.com/cgi/wiki?ModelViewControllerAsAnAggregateDesignPattern

Q

peerless:
LOGO, podemos concluir que, estamos falando sobre a MESMA coisa de maneiras DIFERENTES.

http://c2.com/cgi/wiki?ModelViewControllerAsAnAggregateDesignPattern

concordo! 8)

S

rpffoz:
Olá Senhores,

Pode parecer um pouco lógico e claro assunto, porém aqui na empresa e entre amigos gerou muita discussão sobre o assunto,
Alguns falam que é um Desing Pattern, outros dizem que é apenas um modelo de arquitetura que pode ser seguido.

Existem diversas nomenclaturas. Design Pattern, Application Pattern , Arquitecture Pattern… mas todas significam coisas diferentes. Design Pattern é relacionado ao desenho da apliação. Eles focam mais na interação entre classes e como resolver problemas de comunicação entre classes. Arquitecture Pattern focam na interação entre aplicações e no esqueleto da aplicação. Que tecnologia usam e como as várias tecnologias podem ser encaixadas.
Application Patterns são padrões que visam resolver problemas das aplicações, como por exemplo, representar dinheiro de forma type safe ( padrão Money) .
MVC é um design pattern aplicado a uma só camada, normalmente a de visualização. Ele envolve outros design patterns como o observer ( na realidade o MVC pode ser entendido apenas como uma extensão do Observer, mas a sua fama fez dele um padrão à parte)
MVC não é um padrão de arquitetura . Não é uma forma de separar a aplicação em camadas. Isso são confusões mal entendidos do padrão. Se fossemos aplicar o padrão a camadas , a camada de modelo deveria lançar eventos para a camada view quando fosse alterada : ou seja, o banco deveria lançar eventos para a tela.

R

Bom, só vamos esclarecer algumas coisas voltando as raízes…

O conceito Padrão de Projeto foi criado por Christopher Alexander na década de 70, ele foi é que define algumas características de arquitetura como encapsulamento, generalidade, equilíbrio e etc… de fato são abordagens bem genéricas, não exatamente são voltadas para a Computação.

Bom, Mas quem realmente inventou o MVC? O nome dele é Trygve M. H. Reenskaug (Lindo nome) em 1978/1979, Trygve criou o MVC na XEROX PARC originalmente com 4 termos: Model, View, Controller and Editor, Trygve defende dizendo que foi o primeiro a definir e publicar o padrão.
http://heim.ifi.uio.no/~trygver/

Em 1987, Kent Beck e Ward Cunningham apresentaram alguns padrões para a construção de janelas na linguagem Smalltalk. Nos anos seguintes Beck, Cunningham e outros seguiram com o desenvolvimento desta idéias.

Por fim Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides os famosos GoF (Gang of Four) lançaram o livro Design Patterns: Elements of Reusable Object-Oriented Software em 1995, aqui podemos dizer que nasceu o nome Desing Patterns.

Bom… o que eu acredito, o MVC foi criado apenas como um Padrão de Arquitetura, o conceito Desing Pattern foi criado alguns anos depois, estes definem padrões a qual a motivação é padronizar para resolver problemas conhecidos.

Abraços
\o/

P

sergiotaborda:
rpffoz:
Olá Senhores,

Pode parecer um pouco lógico e claro assunto, porém aqui na empresa e entre amigos gerou muita discussão sobre o assunto,
Alguns falam que é um Desing Pattern, outros dizem que é apenas um modelo de arquitetura que pode ser seguido.

Existem diversas nomenclaturas. Design Pattern, Application Pattern , Arquitecture Pattern… mas todas significam coisas diferentes. Design Pattern é relacionado ao desenho da apliação. Eles focam mais na interação entre classes e como resolver problemas de comunicação entre classes. Arquitecture Pattern focam na interação entre aplicações e no esqueleto da aplicação. Que tecnologia usam e como as várias tecnologias podem ser encaixadas.
Application Patterns são padrões que visam resolver problemas das aplicações, como por exemplo, representar dinheiro de forma type safe ( padrão Money) .
MVC é um design pattern aplicado a uma só camada, normalmente a de visualização. Ele envolve outros design patterns como o observer ( na realidade o MVC pode ser entendido apenas como uma extensão do Observer, mas a sua fama fez dele um padrão à parte)
MVC não é um padrão de arquitetura . Não é uma forma de separar a aplicação em camadas. Isso são confusões mal entendidos do padrão. Se fossemos aplicar o padrão a camadas , a camada de modelo deveria lançar eventos para a camada view quando fosse alterada : ou seja, o banco deveria lançar eventos para a tela.

Oi taborda. Em resumo vc pode confirmar o link que postei logo acima…

até

Z

Em uma aplicação desktop a camada de modelo pode lançar um evento para a view … não?
Model não é sinonimo de banco.

P

Em uma aplicação desktop a camada de modelo pode lançar um evento para a view … não?
Model não é sinonimo de banco.

Como?. EMHO, em uma app desktop… o model não consegue dizer para view: "oi view, eu me atualizei, se atualiza vc ai em cima tbm… ", pois o model não sabe nem que a view existe… O Framework Gênesis, do michel nascimento, usa algo bem parecido com isso, mas é sincronizado em forma dos binds.

P

Architectural Pattern

Z

Claro que o Model consegue se comunicar com a View.
Pra isso existe o Patter Observer.

“The first significant paper published on MVC …”


S

Em uma aplicação desktop a camada de modelo pode lançar um evento para a view … não?

Não. Isso se chama : gambiarra.
É o componente de modelo do MVC que avisa a view do MVC. Como o M sabe que houve mudanças ? Isso cabe a cada aplicação decidir. É preciso entender que todos os componentes do MVC estão na mesma camada: apresentação.

Se MVC fosse um padrão arquitetural seria. Dai a analogia.

P

Exceto pelo fato de que não há cama da de modelo, sim. O model é observável e isso indica lançar eventos no caso de mudanças. A view e um dos seus observadores. Este é o coportamento mais difícil de reproduzir na web e é o que define o MVC desde 1978.

zinho:

Model não é sinonimo de banco.

Exato. Model numa aplicação normal singnifica regras de negócio (domain model)+ infra (persist6encia e etc.) e estes objetos podem ser facilmente observáveis.

T

Você está se referindo a aplicações desktop, não?

R

Na web, com um Data-Push (Producer/Consumer, Subscribe…) você resolve isso, porém seu cliente não pode ser tão simples, com um Flex da vida isso é tranquilo.

P

Você está se referindo a aplicações desktop, não?

Isso é MVC. O que fazemos na web é um puxadinho.

C

Você está se referindo a aplicações desktop, não?

Isso é MVC. O que fazemos na web é um puxadinho.

O chamado Model 2 é uma aberração.
O melhor artigo que já vi até hoje sobre MVC é esse aqui
http://kasparov.skife.org/blog/2004/11/05/#mvc

Por ser simples, falar do historico entre os modelos e uam rápida explicação de como cada um funciona em poucos paragrafos.

Há tempos tenho ele nos meus favoritos, foi inclusive a base do artigo que escrevi para a Java Magazine 54
http://www.milfont.org/tech/2008/02/12/java-magazine-54/
para explicar como funciona os novos modelos web 2 usando ajax para camuflar os efeitos do ambiente web

R

concordo…e assino em baixo

ahhh, tem este link também… http://pt.wikipedia.org/wiki/MVC

S

Humm…

Acho que se enquadra no tipo: Padrão de Projeto de Arquitetura.

MVC visa separar a lógica de negócio, a visualização e acesso a dados em camadas distintas. Separar classes ou objetos pode ser considerado um efeito de arquitetura utilizando um modelo pré definifo, portanto, um design pattern.

Por isso, não deixa de ser um design pattern de arquitetura.

Até!

Criado 28 de fevereiro de 2008
Ultima resposta 29 de fev. de 2008
Respostas 33
Participantes 19