MVC başlangıçta masaüstü uygulamalarının programlanmasını kolaylaştırmak için tanımlanmıştır. Görünüm, model olaylarına abone oldu ve model değiştiğinde sunumu güncelledi. Kontrolör sadece kullanıcı arayüzü olaylarını (örneğin bir düğmeye basma) modele yapılan çağrılara çevirdi. Yani kontrolör ve görünüm modele bağlıydı, ancak birbirinden bağımsızdı. Model her ikisinden de bağımsızdı. Bu, birden çok görünüm ve denetleyicinin aynı model üzerinde çalışmasına izin verdi.
Web 1.0 uygulamaları (tam sayfa yenileme, AJAX yok) için kullanılan "MVC" mimarisi biraz farklıdır. Bir denetleyiciye bir web isteği gönderilir. Denetleyici bir şekilde model durumunu değiştirir, ardından bir görünüm tarafından oluşturulacak bir veya daha fazla modeli gönderir. Denetleyici ve görünüm her ikisi de modele bağlıdır, ancak denetleyici de görünüme bağlıdır.
Web 2.0 uygulamaları ile, istemci tarafında klasik MVC mimarisine dönüyoruz . Model, görünüm ve denetleyicilerin tümü istemci tarafında Javascript nesneleri olarak bulunur. Denetleyici kullanıcı olaylarını model eylemlerine çevirir. Model eylemleri, sunucuya bir AJAX isteğiyle sonuçlanabilir veya sonuçlanmayabilir. Görünüm yine model olaylara abone olur ve sunuyu buna göre günceller.