O MVC foi originalmente definido para facilitar a programação de aplicativos de desktop. A visualização inscrita nos eventos do modelo, atualizando a apresentação quando o modelo foi alterado. O controlador apenas traduziu eventos da interface do usuário (por exemplo, pressionar um botão) em chamadas para o modelo. Portanto, o controlador e a visualização dependiam do modelo, mas eram independentes um do outro. O modelo era independente de ambos. Isso permitiu que várias visualizações e controladores funcionassem no mesmo modelo.
A arquitetura "MVC" usada para aplicativos da Web 1.0 (atualização de página inteira, sem AJAX) é um pouco diferente. Uma solicitação da web é despachada para um controlador. O controlador modifica de alguma forma o estado do modelo e envia um ou mais modelos para serem renderizados por uma visualização. O controlador e a visualização dependem do modelo, mas o controlador também depende da visualização.
Com os aplicativos da Web 2.0, estamos retornando à arquitetura clássica do MVC, no lado do cliente . O modelo, a visualização e o controlador residem no lado do cliente como objetos Javascript. O controlador converte eventos do usuário em ações de modelo. As ações do modelo podem ou não resultar em uma solicitação AJAX para o servidor. Novamente, a visualização assina eventos de modelo e atualiza a apresentação de acordo.