उपयोगकर्ता दृश्य के साथ सहभागिता करता है , लेकिन दृश्य को नियंत्रक को क्रियाओं को संप्रेषित करना होगा । नियंत्रक अद्यतन कर सकते हैं मॉडल है, लेकिन यह हर / किसी भी परिवर्तन के साथ आवश्यक नहीं है।
मैं जो विवरण प्रदान कर रहा हूं वह एमवीसी के .NET कार्यान्वयन के साथ मेरे व्यक्तिगत अनुभव पर आधारित है। आपका कार्यान्वयन अलग हो सकता है।
नियंत्रक जहां कार्रवाई कार्रवाई की जाती है, मूल रूप से एक व्यापार परत है। एक साधारण नियंत्रक दृश्य से फ़ीड करने के लिए मॉडल से डेटा प्राप्त करने के अलावा और कुछ नहीं करेगा। एक जटिल नियंत्रक सुरक्षा प्रबंधन, प्रमाणीकरण, प्राधिकरण, पंजीकरण और संभवतः कई अन्य चीजों तक सभी प्रकार के कार्यों का प्रदर्शन करेगा।
देखें केवल एक फैशन है कि उपयोगकर्ता को समझ सकता हूँ में जानकारी प्रदर्शित करने के लिए जिम्मेदार होना चाहिए। नियंत्रक और मॉडल दोनों के साथ यहां कुछ क्रॉस किया जा सकता है क्योंकि सिंगल पेज एप्लिकेशन (एसपीए) जैसी चीजें उपयोगकर्ता के लिए डेटा सत्यापन प्रतिक्रिया होगी। किसी भी अन्य क्रॉस ओवरों पर भारी दबाव पड़ता है।
मॉडल डेटा से संबंधित है। इसमें डेटा का सत्यापन (जहां लागू हो) शामिल है। डेटा लेयर और रिट्रीवल को भी इस लेयर में संभाला जाता है।
अपडेट करें
आस-पास कुछ भ्रम होने लगता है कि कौन क्या करता है। मैंने एमवीसी आर्किटेक्चर के दो अलग-अलग साक्षात्कारों को शामिल किया क्योंकि वे समान हैं, लेकिन समान नहीं हैं। या तो व्याख्या के लिए जगह है। संभवतः, कई और। ऊपर दिए गए विवरण कई स्रोतों से एमवीसी की मेरी व्याख्या हैं, जिसमें इस पद्धति का उपयोग करके मेरे स्वयं के अनुभव निर्माण अनुप्रयोग भी शामिल हैं। उम्मीद है, इस अपडेट से इस भ्रम को दूर करने में मदद मिलेगी।
एमवीसी सॉफ्टवेयर डेवलपमेंट के लिए एक सेपरेशन ऑफ कंसर्न डिजाइन पैटर्न बनाने का प्रयास है । यह मुख्य रूप से वेब आधारित अनुप्रयोगों (मेरी जानकारी के लिए) में लागू किया गया है।
देखें उपयोगकर्ता इंटरैक्शन के सभी संभालती है। यदि आपका उपयोगकर्ता किसी बटन पर क्लिक करता है, तो दृश्य निर्धारित करता है कि क्लिक उपयोगकर्ता इंटरफ़ेस इंटरैक्शन है या ऐसा कुछ है जो इसकी चिंता से परे है (एक नियंत्रक इंटरैक्शन)। यदि बटन एक क्षेत्र से दूसरे क्षेत्र में प्रतिलिपि मानों की तरह कुछ करता है, तो आपका कार्यान्वयन यह निर्धारित करेगा कि क्या यह एक दृश्य चिंता या नियंत्रक चिंता है। सिंगल पेज एप्लिकेशन (एसपीए) के साथ काम करते समय आपको सबसे अधिक चिंता केवल इस बात की होती है।
नियंत्रक जहां अपने कार्यों कार्रवाई की जाती है है। व्यू ने संचार किया है कि उपयोगकर्ता ने कुछ क्षेत्रों के लिए मूल्यों को बदलने का फैसला किया है। नियंत्रक उस डेटा पर सत्यापन कर सकता है या उसे मॉडल द्वारा नियंत्रित किया जा सकता है। फिर से यह कार्यान्वयन पर निर्भर है। यदि नियंत्रक में सुरक्षा विशेषताएं हैं, तो यह निर्धारित कर सकता है कि उपयोगकर्ता के पास कार्रवाई करने के लिए पर्याप्त विशेषाधिकार नहीं हैं। यह परिवर्तनों को अस्वीकार कर देगा और तदनुसार दृश्य को अपडेट करेगा। नियंत्रक यह भी निर्धारित करता है कि मॉडल से पुनर्प्राप्त करने के लिए कौन सा डेटा है, इसे कैसे पैकेज करें, और उस डेटा के साथ दृश्य को अपडेट करें।
मॉडल निर्धारित करता है कि कैसे और कहाँ डाटा स्टोर करने की। यह स्टोर करने से पहले उस डेटा का सत्यापन भी कर सकता है (इसे ऐसा करना चाहिए क्योंकि लोग मौके पर व्यू को बायपास कर देंगे)।
विकिपीडिया पर MVC पर एक लेख है ।
- एक मॉडल अपने संबंधित दृश्य / विचारों और नियंत्रकों को सूचित करता है जब उसके राज्य में बदलाव हुआ है। यह अधिसूचना विचारों को अपनी प्रस्तुति को अद्यतन करने के लिए अनुमति देता है, और नियंत्रक कमांड के उपलब्ध सेट को बदलने के लिए। कुछ मामलों में MVC कार्यान्वयन "निष्क्रिय" हो सकता है, ताकि अन्य घटकों को सूचित किए जाने के बजाय अपडेट के लिए मॉडल को परागित करना पड़े।
- एक दृश्य नियंत्रक सभी जानकारी यह उपयोगकर्ता के लिए एक निर्गम प्रतिनिधित्व पैदा करने के लिए की जरूरत है के द्वारा कहा जाता है। यह उपयोगकर्ता इनपुट के नियंत्रक को सूचित करने के लिए सामान्य तंत्र भी प्रदान कर सकता है।
- एक नियंत्रक मॉडल की स्थिति को अपडेट करने के लिए मॉडल को कमांड भेज सकता है (उदाहरण के लिए, दस्तावेज़ संपादित करना)। यह मॉडल के दृश्य की प्रस्तुति को बदलने के लिए अपने संबद्ध दृश्य को कमांड भी भेज सकता है (उदाहरण के लिए, दस्तावेज़ के माध्यम से स्क्रॉल करके)।
Microsoft के MVC के अवलोकन से ।
मॉडल। मॉडल ऑब्जेक्ट एप्लिकेशन के कुछ भाग हैं जो एप्लिकेशन के डेटा डोमेन के लिए तर्क को लागू करते हैं। अक्सर, मॉडल ऑब्जेक्ट एक डेटाबेस में मॉडल स्टेट को पुनः प्राप्त और स्टोर करते हैं। उदाहरण के लिए, कोई उत्पाद ऑब्जेक्ट डेटाबेस से जानकारी प्राप्त कर सकता है, उस पर काम कर सकता है, और फिर किसी SQL सर्वर डेटाबेस में उत्पाद तालिका में वापस अद्यतन जानकारी लिख सकता है।
छोटे अनुप्रयोगों में, मॉडल अक्सर भौतिक की बजाय एक वैचारिक अलगाव होता है। उदाहरण के लिए, यदि एप्लिकेशन केवल एक डेटासेट पढ़ता है और इसे दृश्य में भेजता है, तो एप्लिकेशन में एक भौतिक मॉडल परत और संबंधित कक्षाएं नहीं हैं। उस स्थिति में, डाटासेट एक मॉडल ऑब्जेक्ट की भूमिका लेता है।
दृश्य। दृश्य वे घटक हैं जो एप्लिकेशन के उपयोगकर्ता इंटरफ़ेस (UI) को प्रदर्शित करते हैं। आमतौर पर, यह UI मॉडल डेटा से बनाया जाता है। एक उदाहरण एक उत्पाद तालिका का एक संपादित दृश्य होगा जो उत्पाद वस्तु की वर्तमान स्थिति के आधार पर पाठ बक्से, ड्रॉप-डाउन सूची और चेक बॉक्स प्रदर्शित करता है।
नियंत्रकों। कंट्रोलर ऐसे घटक हैं जो उपयोगकर्ता इंटरैक्शन को संभालते हैं, मॉडल के साथ काम करते हैं, और अंततः यूआई को प्रदर्शित करने के लिए एक दृश्य का चयन करते हैं। MVC एप्लिकेशन में, दृश्य केवल जानकारी प्रदर्शित करता है; नियंत्रक उपयोगकर्ता इनपुट और इंटरैक्शन को संभालता है और प्रतिक्रिया देता है। उदाहरण के लिए, नियंत्रक क्वेरी-स्ट्रिंग मानों को संभालता है, और इन मूल्यों को मॉडल में पास करता है, जो बदले में डेटाबेस को क्वेरी करने के लिए इन मूल्यों का उपयोग कर सकता है।