शुरुआती लोगों के लिए MVC फ्रेमवर्क ट्यूटोरियल: क्या है, Archiटेकचर और उदाहरण
एमवीसी फ्रेमवर्क क्या है?
RSI मॉडल-व्यू-नियंत्रक (एमवीसी) फ्रेमवर्क एक आर्किटेक्चरल पैटर्न है जो किसी एप्लिकेशन को तीन मुख्य तार्किक घटकों मॉडल, व्यू और कंट्रोलर में विभाजित करता है। इसलिए इसका संक्षिप्त नाम MVC है। प्रत्येक आर्किटेक्चर घटक किसी एप्लिकेशन के विशिष्ट विकास पहलू को संभालने के लिए बनाया गया है। MVC व्यवसाय तर्क और प्रस्तुति परत को एक दूसरे से अलग करता है। इसे पारंपरिक रूप से डेस्कटॉप ग्राफिकल यूजर इंटरफेस (GUI) के लिए इस्तेमाल किया जाता था। आजकल, वेब तकनीक में MVC आर्किटेक्चर वेब एप्लिकेशन के साथ-साथ मोबाइल ऐप डिज़ाइन करने के लिए लोकप्रिय हो गया है।
एमवीसी का इतिहास
- MVC आर्किटेक्चर पर पहली बार 1979 में ट्रिग्वे रेन्सकॉग द्वारा चर्चा की गई थी
- एमवीसी मॉडल को पहली बार 1987 में स्मॉलटॉक प्रोग्रामिंग भाषा में पेश किया गया था।
- एमवीसी को पहली बार 1988 के एक लेख में एक सामान्य अवधारणा के रूप में स्वीकार किया गया था
- हाल के समय में, आधुनिक वेब अनुप्रयोगों में MVC पैटर्न का व्यापक रूप से उपयोग किया जाता है
एमवीसी की विशेषताएं
- आसान और घर्षण रहित परीक्षण योग्यता। अत्यधिक परीक्षण योग्य, विस्तार योग्य और प्लग करने योग्य फ्रेमवर्क
- MVC पैटर्न का उपयोग करके वेब एप्लिकेशन आर्किटेक्चर डिज़ाइन करने के लिए, यह आपके HTML के साथ-साथ आपके URL पर भी पूर्ण नियंत्रण प्रदान करता है
- ASP.NET, JSP, Django आदि द्वारा प्रदान की गई मौजूदा सुविधाओं का लाभ उठाएं।
- तर्क का स्पष्ट पृथक्करण: मॉडल, दृश्य, नियंत्रक। अनुप्रयोग कार्यों का पृथक्करण अर्थात व्यावसायिक तर्क, Ul तर्क और इनपुट तर्क
- SEO अनुकूल URL के लिए URL रूटिंग। समझने योग्य और खोज योग्य URL के लिए शक्तिशाली URL- मैपिंग
- टेस्ट ड्रिवेन डेवलपमेंट (TDD) के लिए समर्थन
MVC Archiटेक्चर
यहां MVC फ्रेमवर्क की विस्तृत वास्तुकला दी गई है:
तीन महत्वपूर्ण MVC घटक हैं:
- मॉडल: इसमें सभी डेटा और उससे संबंधित तर्क शामिल हैं
- दृश्य: उपयोगकर्ता को डेटा प्रस्तुत करना या उपयोगकर्ता इंटरैक्शन को संभालना
- नियंत्रक: मॉडल और दृश्य घटकों के बीच एक इंटरफ़ेस
आइये एक दूसरे के इस घटक को विस्तार से देखें:
देखें
दृश्य अनुप्रयोग का वह भाग है जो डेटा की प्रस्तुति को दर्शाता है।
मॉडल डेटा से एकत्रित डेटा द्वारा दृश्य बनाए जाते हैं। एक दृश्य मॉडल से जानकारी देने का अनुरोध करता है ताकि वह उपयोगकर्ता को आउटपुट प्रस्तुति प्रस्तुत कर सके।
यह दृश्य चार्ट, आरेख और तालिकाओं से डेटा भी दर्शाता है। उदाहरण के लिए, किसी भी ग्राहक दृश्य में टेक्स्ट बॉक्स, ड्रॉप डाउन आदि जैसे सभी UI घटक शामिल होंगे।
नियंत्रक
नियंत्रक एप्लिकेशन का वह हिस्सा है जो उपयोगकर्ता इंटरैक्शन को संभालता है। नियंत्रक उपयोगकर्ता से माउस और कीबोर्ड इनपुट की व्याख्या करता है, मॉडल और दृश्य को उचित रूप से बदलने के लिए सूचित करता है।
नियंत्रक मॉडल को उसकी स्थिति को अपडेट करने के लिए आदेश भेजता है (उदाहरण के लिए, किसी विशिष्ट दस्तावेज़ को सहेजना)। नियंत्रक दृश्य की प्रस्तुति को बदलने के लिए उससे जुड़े दृश्य को भी आदेश भेजता है (उदाहरण के लिए किसी विशेष दस्तावेज़ को स्क्रॉल करना)।
आदर्श
मॉडल घटक डेटा और उससे संबंधित तर्क को संग्रहीत करता है। यह उस डेटा का प्रतिनिधित्व करता है जिसे नियंत्रक घटकों या किसी अन्य संबंधित व्यावसायिक तर्क के बीच स्थानांतरित किया जा रहा है। उदाहरण के लिए, एक नियंत्रक ऑब्जेक्ट डेटाबेस से ग्राहक की जानकारी प्राप्त करेगा। यह डेटा में हेरफेर करता है और डेटाबेस को वापस भेजता है या उसी डेटा को प्रस्तुत करने के लिए इसका उपयोग करता है।
यह व्यू से अनुरोध का जवाब देता है और खुद को अपडेट करने के लिए नियंत्रक से निर्देशों का भी जवाब देता है। यह पैटर्न का सबसे निचला स्तर भी है जो डेटा को बनाए रखने के लिए जिम्मेदार है।
एमवीसी उदाहरण
आइए दैनिक जीवन से मॉडल व्यू कंट्रोलर का उदाहरण देखें:
उदाहरण 1
- मान लीजिए आप किसी रेस्टोरेंट में जाते हैं। आप रसोई में जाकर खाना नहीं बनाएंगे, जो आप अपने घर पर भी कर सकते हैं। इसके बजाय, आप वहां जाकर वेटर के आने का इंतज़ार करेंगे।
- अब वेटर आपके पास आता है और आप खाना ऑर्डर करते हैं। वेटर को यह नहीं पता कि आप कौन हैं और आप क्या चाहते हैं, उसने सिर्फ़ आपके खाने के ऑर्डर का विवरण लिख लिया।
- फिर, वेटर रसोई में चला जाता है। रसोई में, वेटर आपका खाना तैयार नहीं करता है।
- रसोइया आपका खाना तैयार करता है। वेटर को आपका ऑर्डर दिया जाता है और साथ में आपका टेबल नंबर भी दिया जाता है।
- फिर कुक आपके लिए खाना तैयार करता है। वह खाना पकाने के लिए सामग्री का उपयोग करता है। मान लीजिए कि आपने सब्जी सैंडविच का ऑर्डर दिया है। फिर उसे ब्रेड, टमाटर, आलू, शिमला मिर्च, प्याज, बिट, पनीर आदि की जरूरत होती है, जो वह रेफ्रिजरेटर से लाता है।
- खाना पकाने के बाद खाना वेटर को सौंप दें। अब वेटर का काम है कि वह इस खाने को रसोई से बाहर ले जाए।
- अब वेटर को पता है कि आपने कौन सा खाना ऑर्डर किया है और उसे कैसे परोसा गया है।
इस MVC आर्किटेक्चर उदाहरण में,
View= You Waiter= Controller Cook= Model Refrigerator= Data
आइये एक और MVC मॉडल उदाहरण देखें,
उदाहरण 2
कार ड्राइविंग तंत्र एमवीसी मॉडल का एक और उदाहरण है।
- हर कार में तीन मुख्य भाग होते हैं।
- दृश्य= उपयोगकर्ता इंटरफ़ेस: (गियर लीवर, पैनल, स्टीयरिंग व्हील, ब्रेक, आदि)
- नियंत्रक- तंत्र (इंजन)
- मॉडल- स्टोरेज (पेट्रोल या डीजल टैंक)
कार इंजन से चलती है, भंडारण से ईंधन लेती है, लेकिन यह केवल उल्लिखित उपयोगकर्ता इंटरफ़ेस उपकरणों का उपयोग करके चलती है।
लोकप्रिय MVC वेब फ्रेमवर्क
यहां कुछ लोकप्रिय MVC फ्रेमवर्क की सूची दी गई है:
- रूबी ऑन रेल्स
- Django
- CakePHP
- Yii
- चेरीपी
- वसंत MVC
- उत्प्रेरक
- रेल
- Zend फ्रेमवर्क
- CodeIgniter
- Laravel
- ईंधन PHP
- Symphony
एमवीसी के लाभ: मुख्य लाभ
MVC आर्किटेक्चर का उपयोग करने के प्रमुख लाभ इस प्रकार हैं:
- आसान कोड रखरखाव जिसे विस्तारित करना और विकसित करना आसान है
- MVC मॉडल घटक का परीक्षण उपयोगकर्ता से अलग से किया जा सकता है
- नए प्रकार के ग्राहकों के लिए आसान समर्थन
- विभिन्न घटकों का विकास समानांतर रूप से किया जा सकता है।
- यह आपको किसी एप्लिकेशन को तीन इकाइयों में विभाजित करके जटिलता से बचने में मदद करता है। मॉडल, दृश्य और नियंत्रक
- यह केवल फ्रंट कंट्रोलर पैटर्न का उपयोग करता है जो एकल नियंत्रक के माध्यम से वेब अनुप्रयोग अनुरोधों को संसाधित करता है।
- के लिए सर्वोत्तम समर्थन प्रदान करता है परीक्षण संचालित विकास
- यह उन वेब ऐप्स के लिए अच्छा काम करता है जो वेब डिज़ाइनरों और डेवलपर्स की बड़ी टीमों द्वारा समर्थित होते हैं।
- चिंताओं का स्पष्ट पृथक्करण (SoC) प्रदान करता है।
- खोज इंजन अनुकूलन (एसईओ) अनुकूल.
- सभी वर्ग और ऑब्जेक्ट एक दूसरे से स्वतंत्र हैं ताकि आप उनका अलग-अलग परीक्षण कर सकें।
- एमवीसी डिज़ाइन पैटर्न एक नियंत्रक पर संबंधित क्रियाओं को तार्किक रूप से एक साथ समूहीकृत करने की अनुमति देता है।
एम.वी.सी. का उपयोग करने के नुकसान
- इस मॉडल को पढ़ना, बदलना, यूनिट परीक्षण करना और पुनः उपयोग करना कठिन है
- फ्रेमवर्क नेविगेशन कभी-कभी जटिल हो सकता है क्योंकि यह अमूर्तता की नई परतों को प्रस्तुत करता है जिसके लिए उपयोगकर्ताओं को MVC के विघटन मानदंडों के अनुकूल होना पड़ता है।
- कोई औपचारिक सत्यापन समर्थन नहीं
- डेटा की जटिलता और अकुशलता में वृद्धि
- आधुनिक उपयोगकर्ता इंटरफ़ेस के साथ MVC का उपयोग करने की कठिनाई
- समानांतर प्रोग्रामिंग करने के लिए कई प्रोग्रामर्स की आवश्यकता होती है।
- अनेक प्रौद्योगिकियों का ज्ञान आवश्यक है।
- नियंत्रक में बहुत सारे कोडों का रखरखाव
3 स्तरीय Archiटेक्चर बनाम एमवीसी Archiटेक्चर
प्राचल | 3-टियर Archiटेक्चर | MVC Archiटेक्चर |
---|---|---|
संचार | इस प्रकार का आर्किटेक्चर पैटर्न कभी भी डेटा लेयर के साथ सीधे संचार नहीं करता है। | सभी परतें त्रिभुजाकार टोपोलॉजी का उपयोग करके सीधे संवाद करती हैं। |
प्रयोग | 3-स्तरीय: वेब अनुप्रयोगों में व्यापक रूप से उपयोग किया जाता है जहां क्लाइंट, डेटा स्तर और मिडलवेयर भौतिक रूप से अलग-अलग प्लेटफार्मों पर चलते हैं। | आमतौर पर इसका उपयोग उन अनुप्रयोगों पर किया जाता है जो एकल ग्राफ़िकल वर्कस्टेशन पर चलते हैं। |
सारांश
- एमवीसी एक आर्किटेक्चरल पैटर्न है जो किसी एप्लिकेशन को 1) मॉडल, 2) व्यू और 3) कंट्रोलर में विभाजित करता है
- मॉडल: इसमें सभी डेटा और उससे संबंधित तर्क शामिल हैं
- दृश्य: उपयोगकर्ता को डेटा प्रस्तुत करना या उपयोगकर्ता इंटरैक्शन को संभालना
- नियंत्रक: मॉडल और दृश्य घटकों के बीच एक इंटरफ़ेस
- MVC आर्किटेक्चर पर पहली बार 1979 में ट्रिग्वे रेन्सकॉग द्वारा चर्चा की गई थी
- एमवीसी वास्तुकला Java एक अत्यधिक परीक्षण योग्य, विस्तार योग्य और प्लग करने योग्य फ्रेमवर्क है
- कुछ लोकप्रिय MVC फ्रेमवर्क हैं रेल्स, ज़ेंड फ्रेमवर्क, कोडइग्निटर, लारवेल, फ्यूल PHP, आदि।