MVC pada awalnya didefinisikan untuk memudahkan pemrograman aplikasi desktop. Tampilan berlangganan acara model, memperbarui presentasi ketika model berubah. Kontroler hanya menerjemahkan peristiwa antarmuka pengguna (misalnya, tekan tombol) menjadi panggilan ke model. Jadi pengontrol dan tampilan tergantung pada model, tetapi tidak tergantung satu sama lain. Model itu independen dari keduanya. Ini memungkinkan banyak tampilan dan pengontrol bekerja pada model yang sama.
Arsitektur "MVC" yang digunakan untuk aplikasi web 1.0 (refresh halaman penuh, tanpa AJAX) agak berbeda. Permintaan web dikirim ke pengontrol. Pengontrol entah bagaimana memodifikasi keadaan model, kemudian mengirimkan satu atau lebih model yang akan ditampilkan oleh tampilan. Pengontrol dan tampilan keduanya bergantung pada model, tetapi pengontrol juga tergantung pada tampilan.
Dengan aplikasi web 2.0, kami kembali ke arsitektur MVC klasik, di sisi klien . Model, tampilan, dan pengontrol semua berada di sisi klien sebagai objek Javascript. Pengontrol menerjemahkan peristiwa pengguna ke tindakan model. Tindakan model mungkin atau mungkin tidak menghasilkan permintaan AJAX ke server. Sekali lagi, tampilan berlangganan acara model dan memperbarui presentasi sesuai.