यह सामग्री "उद्यम विकास का परिचय" श्रृंखला का हिस्सा है। पिछले लेख:
इस लेख में हम एमवीसी नाम की किसी चीज के बारे में जानेंगे। हम इस बारे में बात करेंगे कि एमवीसी क्या है, इसके इतिहास पर स्पर्श करें, एमवीसी में सन्निहित मूल विचारों और अवधारणाओं का पता लगाएं, मॉडल, व्यू और कंट्रोलर मॉड्यूल में एक एप्लिकेशन को कैसे विभाजित करें, इस पर चरण-दर-चरण नज़र डालें, एक लिखें स्प्रिंग बूट का उपयोग करके छोटा वेब एप्लिकेशन, और उदाहरण के तौर पर स्प्रिंग एमवीसी का उपयोग करके देखें कि जावा कोड से HTML पेजों पर डेटा कैसे भेजा जाता है। इस सामग्री को समझने के लिए, आपको डिज़ाइन पैटर्न, विशेष रूप से प्रेक्षक और अग्रभाग से परिचित होने की आवश्यकता है। और HTTP अनुरोधों और प्रतिक्रियाओं से परिचित हों, HTML की मूल बातें समझें, और जानें कि जावा एनोटेशन क्या हैं। एक कप कॉफी लें और नाश्ता करें और आराम से बैठ जाएं। चलो शुरू करें।
इन सब से हम एक तार्किक निष्कर्ष निकाल सकते हैं। एक जटिल प्रणाली को मॉड्यूल में विभाजित करने की आवश्यकता है। आइए संक्षेप में इस अलगाव को प्राप्त करने के चरणों का वर्णन करें।
और इस तरह हम मॉडल, व्यू और कंट्रोलर नामक तीन मॉड्यूल वाले एप्लिकेशन पर पहुंचते हैं। आइए संक्षेप करते हैं:
- नेटवर्किंग के बारे में
- सॉफ्टवेयर आर्किटेक्चर के बारे में
- HTTP/HTTPS के बारे में
- मेवेन की मूल बातें के बारे में
- सर्वलेट्स के बारे में (एक साधारण वेब एप्लिकेशन लिखना)
- सर्वलेट कंटेनर के बारे में

एमवीसी का इतिहास
1970 के दशक के अंत में ज़ेरॉक्स PARC में काम करते समय MVC के पीछे के विचारों को ट्राईगवे रीन्सकॉग द्वारा तैयार किया गया था। उन दिनों, कंप्यूटर के साथ काम करने के लिए एक डिग्री और बड़े दस्तावेज़ों के निरंतर अध्ययन की आवश्यकता होती थी। Reenskaug द्वारा बहुत मजबूत डेवलपर्स के एक समूह के साथ हल किया गया कार्य कंप्यूटर के साथ एक सामान्य उपयोगकर्ता की सहभागिता को आसान बनाना था। ऐसे उपकरण बनाना आवश्यक था, जो एक ओर, अत्यंत सरल और समझने योग्य हों, और दूसरी ओर, कंप्यूटर और जटिल अनुप्रयोगों को नियंत्रित करना संभव बनाते। रीन्सकॉग ने एक टीम पर काम किया जिसने "सभी उम्र के बच्चों के लिए" एक लैपटॉप कंप्यूटर विकसित किया - डायनाबूक, साथ ही एलन के के नेतृत्व में स्मॉलटॉक भाषा। यही वह समय था जब एक दोस्ताना इंटरफेस की अवधारणा रखी गई थी। कई मामलों में, Reenskaug और उनकी टीम द्वारा किए गए कार्य ने IT क्षेत्र के विकास को प्रभावित किया। यहां एक दिलचस्प तथ्य है जो एमवीसी पर सीधे लागू नहीं होता है, लेकिन इन विकासों के महत्व को दर्शाता है। एलन केकहा, "जब मैं पहली बार Apple गया, जो '84 में था, मैक पहले से ही बाहर था और न्यूजवीक ने मुझसे संपर्क किया और मुझसे पूछा कि मैं मैक के बारे में क्या सोचता हूं। मैंने कहा, 'ठीक है, मैक पहला पर्सनल कंप्यूटर है जो काफी अच्छा है आलोचना की जाए।' इसलिए, 2007 में आईफोन की घोषणा करने के बाद, उन्होंने इसे मेरे पास लाया और मुझे सौंप दिया। उन्होंने कहा, 'एलन, क्या यह आलोचना के लिए पर्याप्त है?' और मैंने कहा, 'स्टीव, इसे टैबलेट जितना बड़ा बना दो और तुम दुनिया पर राज करोगे।'" 3 साल बाद, 27 जनवरी, 2010 को, Apple ने 9.7 इंच के विकर्ण के साथ iPad पेश किया। दूसरे शब्दों में, स्टीव जॉब्स ने लगभग पूरी तरह से एलन के की सलाह का पालन किया। रेंसकॉग का प्रोजेक्ट 10 साल तक चला। लेकिन एमवीसी के बारे में पहला प्रकाशन 10 साल बाद प्रकाश में आया। मार्टिन फाउलर, सॉफ्टवेयर आर्किटेक्चर पर कई पुस्तकों और लेखों के लेखक, उल्लेख करता है कि उन्होंने स्मॉलटाक के कार्यशील संस्करण का उपयोग करके एमवीसी का अध्ययन किया। क्योंकि मूल स्रोत से एमवीसी के बारे में लंबे समय तक कोई जानकारी नहीं थी, और कई अन्य कारणों से, इस अवधारणा की बड़ी संख्या में विभिन्न व्याख्याएं सामने आईं। परिणामस्वरूप, कई लोग MVC को एक डिज़ाइन पैटर्न मानते हैं। कम सामान्यतः, एमवीसी को एक समग्र पैटर्न या कई पैटर्नों का संयोजन कहा जाता है जो जटिल अनुप्रयोगों को बनाने के लिए मिलकर काम करते हैं। लेकिन, जैसा कि पहले उल्लेख किया गया है, MVC वास्तव में मुख्य रूप से वास्तुशिल्प विचारों/सिद्धांतों/दृष्टिकोणों का एक सेट है जिसे विभिन्न पैटर्न का उपयोग करके विभिन्न तरीकों से लागू किया जा सकता है... अगला, हम MVC अवधारणा में अंतर्निहित मुख्य विचारों पर विचार करेंगे। और कई अन्य कारणों से, इस अवधारणा की बड़ी संख्या में विभिन्न व्याख्याएँ सामने आईं। परिणामस्वरूप, कई लोग MVC को एक डिज़ाइन पैटर्न मानते हैं। कम सामान्यतः, एमवीसी को एक समग्र पैटर्न या कई पैटर्नों का संयोजन कहा जाता है जो जटिल अनुप्रयोगों को बनाने के लिए मिलकर काम करते हैं। लेकिन, जैसा कि पहले उल्लेख किया गया है, MVC वास्तव में मुख्य रूप से वास्तुशिल्प विचारों/सिद्धांतों/दृष्टिकोणों का एक सेट है जिसे विभिन्न पैटर्न का उपयोग करके विभिन्न तरीकों से लागू किया जा सकता है... अगला, हम MVC अवधारणा में अंतर्निहित मुख्य विचारों पर विचार करेंगे। और कई अन्य कारणों से, इस अवधारणा की बड़ी संख्या में विभिन्न व्याख्याएँ सामने आईं। परिणामस्वरूप, कई लोग MVC को एक डिज़ाइन पैटर्न मानते हैं। कम सामान्यतः, एमवीसी को एक समग्र पैटर्न या कई पैटर्नों का संयोजन कहा जाता है जो जटिल अनुप्रयोगों को बनाने के लिए मिलकर काम करते हैं। लेकिन, जैसा कि पहले उल्लेख किया गया है, MVC वास्तव में मुख्य रूप से वास्तुशिल्प विचारों/सिद्धांतों/दृष्टिकोणों का एक सेट है जिसे विभिन्न पैटर्न का उपयोग करके विभिन्न तरीकों से लागू किया जा सकता है... अगला, हम MVC अवधारणा में अंतर्निहित मुख्य विचारों पर विचार करेंगे।एमवीसी: मूल विचार और सिद्धांत
- वीसी उपयोगकर्ता इंटरफ़ेस के साथ जटिल सूचना प्रणाली के निर्माण के लिए वास्तुशिल्प विचारों और सिद्धांतों का एक समूह है
- MVC एक संक्षिप्त नाम है जिसका अर्थ है: मॉडल-व्यू-कंट्रोलर

चरण 1. एप्लिकेशन के व्यावसायिक तर्क को उपयोगकर्ता इंटरफ़ेस से अलग करें
एमवीसी का मुख्य विचार यह है कि उपयोगकर्ता इंटरफ़ेस वाले किसी भी एप्लिकेशन को 2 मॉड्यूल में विभाजित किया जा सकता है: व्यापार तर्क और उपयोगकर्ता इंटरफ़ेस को लागू करने के लिए जिम्मेदार मॉड्यूल। पहला मॉड्यूल एप्लिकेशन की मुख्य कार्यक्षमता को लागू करेगा। यह मॉड्यूल सिस्टम का मूल है, जहां एप्लिकेशन का डोमेन मॉडल लागू किया जाता है। एमवीसी प्रतिमान में, यह मॉड्यूल अक्षर एम है, यानी मॉडल। दूसरा मॉड्यूल पूरे यूजर इंटरफेस को लागू करता है, जिसमें उपयोगकर्ता को डेटा प्रदर्शित करने के लिए तर्क और एप्लिकेशन के साथ उपयोगकर्ता की बातचीत को संभालना शामिल है। इस अलगाव का मुख्य लक्ष्य यह सुनिश्चित करना है कि सिस्टम के मूल (एमवीसी शब्दावली में "मॉडल") को स्वतंत्र रूप से विकसित और परीक्षण किया जा सकता है। इसे अलग करने के बाद, एप्लिकेशन का आर्किटेक्चर इस तरह दिखता है:
चरण 2 मॉडल को और अधिक स्वतंत्र बनाने और उपयोगकर्ता इंटरफ़ेस को सिंक्रनाइज़ करने के लिए पर्यवेक्षक पैटर्न का उपयोग करें
यहां हमारे 2 लक्ष्य हैं:- मॉडल के लिए और भी अधिक स्वतंत्रता प्राप्त करें
- उपयोगकर्ता इंटरफ़ेस को सिंक्रनाइज़ करें
चरण 3 इंटरफ़ेस को दृश्य और नियंत्रक में अलग करें
हम एप्लिकेशन को मॉड्यूल में विभाजित करना जारी रखते हैं, लेकिन अब पदानुक्रम में निचले स्तर पर हैं। इस चरण में, उपयोगकर्ता इंटरफ़ेस (जिसे हमने चरण 1 में एक अलग मॉड्यूल में विभाजित किया था) को एक दृश्य और एक नियंत्रक में विभाजित किया गया है। दृश्य और नियंत्रक के बीच एक सख्त रेखा खींचना कठिन है। यदि हम कहते हैं कि दृश्य वह है जो उपयोगकर्ता देखता है, और नियंत्रक वह तंत्र है जो उपयोगकर्ता को सिस्टम के साथ बातचीत करने की अनुमति देता है, तो आप एक विरोधाभास की ओर इशारा कर सकते हैं। नियंत्रण तत्व, जैसे किसी वेब पेज पर बटन या फ़ोन की स्क्रीन पर वर्चुअल कीबोर्ड, मूल रूप से नियंत्रक का हिस्सा होते हैं। लेकिन वे उपयोगकर्ता को दृश्य के किसी भी भाग के रूप में दिखाई देते हैं। हम वास्तव में यहाँ जिस बारे में बात कर रहे हैं वह कार्यात्मक पृथक्करण है। उपयोगकर्ता इंटरफ़ेस का मुख्य कार्य सिस्टम के साथ उपयोगकर्ता की सहभागिता को सुविधाजनक बनाना है।- आउटपुट और आसानी से उपयोगकर्ता को सिस्टम जानकारी प्रदर्शित करता है
- उपयोगकर्ता डेटा और कमांड दर्ज करें (उन्हें सिस्टम में संचार करें)

- एमवीसी प्रतिमान के सिद्धांतों के अनुसार, एक प्रणाली को मॉड्यूल में विभाजित किया जाना चाहिए।
- सबसे महत्वपूर्ण और स्वतंत्र मॉड्यूल मॉडल होना चाहिए।
- मॉडल प्रणाली का मूल है। उपयोगकर्ता इंटरफ़ेस से इसे स्वतंत्र रूप से विकसित और परीक्षण करना संभव होना चाहिए।
- इसे प्राप्त करने के लिए, विभाजन के पहले चरण में, हमें सिस्टम को एक मॉडल और यूजर इंटरफेस में विभाजित करने की आवश्यकता है।
- फिर, पर्यवेक्षक पैटर्न का उपयोग करके, हम मॉडल की स्वतंत्रता को बढ़ाते हैं और उपयोगकर्ता इंटरफ़ेस को सिंक्रनाइज़ करते हैं।
- तीसरा कदम यूजर इंटरफेस को कंट्रोलर और व्यू में विभाजित करना है।
- सिस्टम में उपयोगकर्ता डेटा प्राप्त करने के लिए जो कुछ भी आवश्यक है वह नियंत्रक में है।
- उपयोगकर्ता को जानकारी देने के लिए जो कुछ भी आवश्यक है, वह दृश्य में है।
व्यू और कंट्रोलर मॉडल के साथ कैसे इंटरैक्ट करते हैं, इसके बारे में थोड़ा सा
नियंत्रक के माध्यम से जानकारी दर्ज करके, उपयोगकर्ता मॉडल को बदल देता है। या कम से कम, उपयोगकर्ता मॉडल डेटा को बदलता है। जब उपयोगकर्ता इंटरफ़ेस तत्वों (दृश्य के माध्यम से) के माध्यम से जानकारी प्राप्त करता है, तो उपयोगकर्ता मॉडल के बारे में जानकारी प्राप्त कर रहा होता है। यह कैसे होता है? किस माध्यम से व्यू और कंट्रोलर मॉडल के साथ इंटरैक्ट करते हैं? आखिरकार, डेटा पढ़ने/लिखने के लिए दृश्य की कक्षाएं सीधे मॉडल की कक्षाओं के तरीकों को कॉल नहीं कर सकती हैं। अन्यथा, हम यह नहीं कह पाएंगे कि मॉडल स्वतंत्र है। मॉडल बारीकी से संबंधित वर्गों का एक सेट है, जिसे न तो दृश्य और न ही नियंत्रक तक पहुंच प्राप्त होनी चाहिए। मॉडल को दृश्य और नियंत्रक से जोड़ने के लिए, हमें मुखौटा डिजाइन पैटर्न को लागू करने की आवश्यकता है। मॉडल का मुखौटा मॉडल और यूजर इंटरफेस के बीच की परत है, जिसके माध्यम से दृश्य आसानी से स्वरूपित डेटा प्राप्त करता है, और नियंत्रक मुखौटा पर आवश्यक विधियों को कॉल करके डेटा को बदलता है। अंत में, सब कुछ इस तरह दिखता है:
GO TO FULL VERSION