Portanto, existem muitos padrões de design diferentes nessa área.
- Apresentador da vista de modelo (mvp)
- Apresentador de exibição de vista de modelo (mvvp)
- Model View Controller
- Model 2
e assim por diante. Ao longo dos anos, eles foram entrelaçados, misturados, alterados e aplicados em uma ampla variedade de contextos. O ponto importante aqui é que o padrão de design do MVC de 1977 mudou bastante e não é mais o padrão de design usado pelos frameworks da Web do lado do servidor. Como um exemplo na implementação original do smalltalk, o Model observaria a exibição de alterações, o que não é mais o caso, pois o servidor simplesmente não pode observar os elementos html no navegador do usuário. Em vez disso, se a visualização mudar, ela enviará uma solicitação ao controlador que atualizará a visualização. Novamente, a implementação original do MVC não é seguida, pois uma atualização no modelo implica que todas as visualizações dependentes do modelo sejam atualizadas.
As estruturas modernas da Web seguem uma arquitetura simples de três camadas, também conhecida como arquitetura Modelo 2.
É claro que existem exemplos de arquiteturas MVC reais na Web, mas geralmente são apenas do lado do cliente, conectados a um servidor que segue a arquitetura do Modelo 2, pois as visualizações são xml e json e não são observadas para alterações. Exemplos de arquiteturas mvc puras do lado do cliente são Sencha Touch e Sproutcore.
Se você possui MVC no navegador, mvc como no servidor e mvc como camada de dados, você tem uma implementação hierárquica de mvc.
Nota. Eu só falei sobre estruturas da Web, outras implementações do MVC, como java swing e Flex, têm outras diferenças de implementação.