MVC को मूल रूप से डेस्कटॉप अनुप्रयोगों की प्रोग्रामिंग को आसान बनाने के लिए परिभाषित किया गया था। जब मॉडल बदला गया, तो प्रस्तुति को अपडेट करते हुए दृश्य ने मॉडल घटनाओं की सदस्यता ली। नियंत्रक ने केवल उपयोगकर्ता इंटरफ़ेस घटनाओं (जैसे एक बटन प्रेस) को मॉडल में कॉल में अनुवादित किया। इसलिए नियंत्रक और दृश्य मॉडल पर निर्भर थे, लेकिन एक दूसरे से स्वतंत्र थे। मॉडल दोनों से स्वतंत्र था। इसने कई विचारों और नियंत्रकों को एक ही मॉडल पर काम करने की अनुमति दी।
वेब 1.0 अनुप्रयोगों (पूर्ण पृष्ठ ताज़ा, कोई AJAX) के लिए उपयोग की जाने वाली "MVC" वास्तुकला कुछ अलग है। एक नियंत्रक के लिए एक वेब अनुरोध भेजा जाता है। नियंत्रक किसी तरह मॉडल स्थिति को संशोधित करता है, फिर एक या अधिक मॉडल को एक दृश्य द्वारा प्रस्तुत करने के लिए भेजता है। नियंत्रक और दृश्य दोनों मॉडल पर निर्भर करते हैं, लेकिन नियंत्रक भी दृश्य पर निर्भर करता है।
वेब 2.0 अनुप्रयोगों के साथ, हम क्लाइंट की तरफ क्लासिक MVC आर्किटेक्चर में लौट रहे हैं । मॉडल, दृश्य और नियंत्रक सभी ग्राहक की ओर जावास्क्रिप्ट वस्तुओं के रूप में रहते हैं। नियंत्रक उपयोगकर्ता घटनाओं को मॉडल क्रियाओं में अनुवाद करता है। मॉडल क्रियाओं का परिणाम हो सकता है या सर्वर के लिए AJAX अनुरोध नहीं हो सकता है। फिर से, दृश्य मॉडल घटनाओं की सदस्यता लेता है और तदनुसार प्रस्तुति को अद्यतन करता है।