एमवीसी एक कम परिभाषित पैटर्न है जो आर्किटेक्ट को कार्यान्वयन के विवरण पर अधिक विवेक देता है। शायद यही कारण है कि एमवीसी के इतने सारे बदलाव मौजूद हैं।
मेरे ज्ञान के लिए, यह सब क्लासिक (मूल) एमवीसी के साथ शुरू हुआ जो वेब पार्ट्स को अलग-अलग हिस्सों यानी मॉडल, व्यू और कंट्रोलर में अलग करता है। उद्देश्य थे:
- मॉडल और देखें (ऑब्जर्वर पैटर्न इसे प्राप्त करने के लिए नियोजित) के बीच ढीला संयोजन पाना।
- मॉडल में व्यावसायिक तर्क को समाहित करें ताकि यह पूरी तरह से परीक्षण किया जा सके।
- इसे जांचने की आवश्यकता को कम करने के लिए जितना संभव हो उतना गूंगा/पतला के रूप में देखें।
पैटर्न इतने सारे मंत्रमुग्ध कई रूप (सक्रिय मॉडल, निष्क्रिय मॉडल, MODEL2) श्रेणियां थीं। ये बदलाव ढांचे के डिजाइन लक्ष्यों के अनुरूप विशेष ढांचे में पैटर्न के कार्यान्वयन के कारण थे।
उदाहरण के लिए, एक भिन्नता मॉडल 2 है। मॉडल 2 एक वेब विविधता है (क्लासिक एमवीसी वास्तव में डेस्कटॉप एप्लिकेशन के लिए लक्षित था) और "एएसपी.नेट एमवीसी फ्रेमवर्क" के रूप में लोकप्रिय हो गया।
क्लासिक MVC और ASP.NET MVC फ्रेमवर्क के बीच मुख्य अंतर है, बाद में मॉडल और देखें जिसका अर्थ है कोई सीधा संपर्क के बीच एक साफ जुदाई प्रदान करता है। बल्कि एएसपी.नेट एमवीसी फ्रेमवर्क में मॉडल और व्यू के बीच इस संचार को सुविधाजनक बनाने के लिए नियंत्रक जिम्मेदार है। यह एएसपी.नेट एमवीसी फ्रेमवर्क वेब अनुप्रयोगों को बहुत आसान बनाता है & परीक्षण करने के लिए कुशल।
इसके अलावा, मॉडल 2 में एक प्रकार का ढीला अनुबंध है जिसे दृश्य और नियंत्रक के बीच स्थापित किया जा सकता है। एएसपी.नेट एमवीसी फ्रेमवर्क में, इस अनुबंध को व्यूडाटा कंटेनर ऑब्जेक्ट द्वारा प्रदर्शित किया जाता था और आजकल व्यूमोडेल ऑब्जेक्ट का उपयोग करके किया जाता था।
भ्रम से बचने के लिए, वर्तमान में उपयोग में आने वाले एमवीसी पैटर्न कार्यान्वयन में इन तीन भागों (मॉडल, देखें & नियंत्रक) के बीच बातचीत को देखने की आवश्यकता है। इस तथ्य को भी गले लगाओ कि यह एमवीसी पैटर्न का एक विशेष कार्यान्वयन है और एक आरेख पूरी तरह से इसका वर्णन करने में सक्षम नहीं हो सकता है।
पहला आरेख पूरी तरह से सही नहीं है .. यह उपयोगकर्ता अनुरोध होना चाहिए -> नियंत्रक द्वारा नियंत्रित -> मॉडल में हेरफेर -> नियंत्रक द्वारा नियंत्रित -> देखने के लिए भेजा गया। तो मूल रूप से नियंत्रक मध्य व्यक्ति की तरह है जो दृश्य के साथ मॉडल को जोड़ता है। – SolidSnake
अच्छी तरह से पहली तस्वीर आपको मॉडल - व्यू - कंट्रोलर का स्पष्ट प्रवाह देता है। काम करता है। लेकिन यहां मॉडल और व्यू के बीच सीधा संचार दिखाया गया है। प्रश्न को छोड़कर दूसरी तस्वीर के लिए भी यह सच नहीं है; क्या मॉडल मॉडल से संबंधित है? हाँ यही है। –
मैंने सोचा कि मैं भी इसी तरह के डिजाइन पैटर्न के साथ अधिक लेख देखने के बाद पहली आरेख के रूप में मैंने हावी आश्चर्यचकित होना शुरू किया। जब तक दूसरा चित्र एमवीपी नहीं है, पी प्रस्तुतकर्ता है? – Matchbox2093