एमवीवीएम और एमवीपी के बीच अंतर
सॉफ्टवेयर विकास का उद्देश्य उन समाधानों का निर्माण करना है जो उपयोगकर्ताओं और व्यवसायों के लिए जरूरतों और समस्याओं का समाधान करते हैं। इसे प्राप्त करने के लिए, विभिन्न तकनीकों और वास्तुकला पैटर्न जैसे मॉडल-व्यू-देखेंमोडेल (एमवीएमएम) और मॉडल-व्यू-प्रेंटर (एमवीपी) उपयोग किया जाता है
जैसा कि कुछ भी निर्मित होता है, पहला कदम नियोजन और डिजाइन चरण है सॉफ़्टवेयर डिज़ाइन प्रक्रिया पसंदीदा तकनीक टूल-सेट पर आधारित एक विनिर्देशन हो सकती है, और यह गर्भाधान से लेकर सभी योजनाओं को शामिल कर सकती है - से - योजना - से - कार्यान्वयन - से - अपडेट और संशोधनों।
यह निम्न स्तर और उच्च स्तरीय वास्तुशिल्प डिजाइन, चयनित आर्किटेक्चर पैटर्न के आधार पर, और डिजाइन पैटर्न का उपयोग करते हुए पुन: प्रयोज्य समाधानों को बाहर के नक्शे को कवर करता है।
सॉफ्टवेयर एप्लीकेशन स्ट्रक्चर
सॉफ्टवेयर आर्किटेक्चर एक एप्लीकेशन की संरचना को परिभाषित करता है जो तकनीकी, परिचालनात्मक और उपयोगकर्ता की जरूरतों को पूरा करता है और यह दर्शाता है कि कोड कैसे व्यवस्थित और प्रबंधित है
सॉफ़्टवेयर एप्लिकेशन के आर्किटेक्चर पर निर्णय करना महत्वपूर्ण है क्योंकि यह पहले से ही विकसित किए गए किसी ऐप्लिकेशन का एक आसान, अस्थिर हिस्सा नहीं है; इसलिए किसी भी प्रोग्रामिंग शुरू होने से पहले वास्तुशिल्प पैटर्न का निर्णय लिया जाना चाहिए।
वास्तुकला पैटर्न डिजाइन पैटर्न के लिए कुछ अलग हैं क्योंकि उनके प्रदर्शन को हार्डवेयर प्रदर्शन और सीमाएं और उच्च उपलब्धता जैसे अधिक तकनीकी मुद्दों को संबोधित करते हुए बहुत व्यापक है। विभिन्न आर्किटेक्चर पैटर्न के उदाहरण हैं एमवीसी, एमवीवीएम, और एमवीपी।
दूसरी तरफ, डिजाइन पैटर्न सर्वोत्तम प्रथाओं के औपचारिक रूप से औपचारिक रूप से औपचारिक वस्तु-उन्मुख विकास की सुविधा प्रदान करते हैं और किसी एप्लिकेशन के आर्किटेक्चर से बनाए रखने और बदलना आसान होते हैं।
वास्तुकला पैटर्न
मॉडल व्यू नियंत्रक (एमवीसी) वेब अनुप्रयोगों के लिए विकसित किए गए पहला वास्तुशिल्प पैटर्न में से एक था, जो कि मध्य से लेकर नब्बे के दशक तक लोकप्रिय हो रहा है, विशेष रूप से जावा समुदाय के साथ
नए फ़्रेमवर्क, जैसे अजगर और रेल के लिए डीजेंगो (पटरियों पर रूबी), तेजी से तैनाती पर एक मजबूत फोकस है, यही वजह है कि एमवीसी बाजार के हिस्से को वास्तुशिल्प पैटर्नों में बड़े आकर्षण के रूप में ले रहा है।
परंपरागत रूप से, यूजर इंटरफेस डेवलपमेंट में जटिल तर्क को संभालने के लिए बहुत सारे कोड होते थे इसलिए वास्तुकला पैटर्न यूजर इंटरफेस (यूआई) स्तर पर कोड को कम करने के लिए डिजाइन किए गए थे, जिससे इसे 'अधिक स्वच्छ' और प्रबंधनीय बना दिया गया था।
तो, एमवीसी पैटर्न के साथ, एक वेब अनुप्रयोग
- मॉडल (डेटा)
- देखें (डेटा को देखने और हेरफेर करने के लिए इंटरफ़ेस)
- नियंत्रक
मॉडल डेटा और व्यावसायिक तर्क संभालता है और नहीं मॉडल और नियंत्रक के बीच निर्भरता < या देखें ।
देखें उपयोगकर्ता को डेटा को समर्थित स्वरूप और आवश्यक लेआउट में प्रस्तुत करता है, और जब नियंत्रक उपयोगकर्ता अनुरोध प्राप्त करता है (डेटा प्राप्त करने के लिए), तो वह आवश्यक संसाधनों को कॉल करता है अनुरोध पूरा करने के लिए आइए एक ऑनलाइन बुक स्टोअर बनाने के लिए इस पैटर्न को लागू करें।
उपयोगकर्ता किताबें खोज सकते हैं, देख सकते हैं, रजिस्टर कर सकते हैं और खरीद सकते हैं, साथ ही साथ उनकी प्रोफाइल और पुस्तक सूचियों का प्रबंधन भी कर सकते हैं। जब कोई उपयोगकर्ता एससीआई-एफआई श्रेणी पर क्लिक करता है, तो सभी संबंधित पुस्तकों को उपलब्ध के रूप में दिखाना चाहिए।
नियंत्रक पुस्तकों (सूची, जोड़, दृश्य, आदि) का प्रबंधन करने वाले कार्यों को संभाल लें। एक से अधिक नियंत्रक एक मुख्य नियंत्रक 'यातायात निर्देशन' के साथ हो सकता है इस उदाहरण के लिए, नियंत्रक को नियंत्रक_बुक्स नाम दिया गया है php और मॉडल (जैसे मॉडल_बुक्स। php) पुस्तकों से संबंधित डेटा और तर्क संभालती है। अंत में, अलग-अलग
दृश्य की आवश्यकता होगी, जैसे ऑनलाइन कार्ट में पुस्तकों को जोड़ना या छवियों और समीक्षाओं के साथ पुस्तक विवरण देखने पर।
controller_books। php मुख्य नियंत्रक (उदा। अनुक्रमणिका। php ) से कार्रवाई (उपयोगकर्ता अनुरोध) प्राप्त करता है controller_books। php अनुरोध का विश्लेषण करता है और मॉडल_बुक्स कॉल करता है। एससीआई-एफआई पुस्तकों की सूची वापस करने के लिए php (डेटा)
मॉडल की ज़िम्मेदारी उस सूचना को प्रदान करना है, जो प्रयोग किए गए किसी तर्क (खोज फ़िल्टर का उपयोग करके) का उपयोग करना है। नियंत्रक तब जानकारी लेता है और इसे संबंधित देखें (खोज दृश्य, प्रिंट दृश्य, विस्तार दृश्य आदि) में भेजता है और जानकारी प्रस्तुत की जाती है ( देखें के माध्यम से >) का अनुरोध करने वाले उपयोगकर्ता को भेजें। यह एमवीसी पैटर्न का मूल सिद्धांत है, जिसने मॉडल-व्यू-प्रस्तुति (एमवीपी), मॉडल-व्यू-व्यू मॉोडेल (एमवीवीएम), पदानुक्रमित-मॉडल-व्यू-नियंत्रक (वास्तुकला-मॉडल-व्यू-नियंत्रक) के रूप में आर्किटेक्चर पैटर्नों की बढ़ती विविधताएं विकसित की हैं (एचएमवीसी), और मॉडल-व्यू- एडाप्टर (एमवीए), आदि। एमवीपी पैटर्न
मॉडल-व्यू-प्रस्तुतकर्ता (एमवीपी)
एमवीपी पैटर्न < थोड़ी देर के लिए रहा है और एमवीसी का एक प्रकार है यह विशेष रूप से परीक्षण स्वचालन के लिए डिज़ाइन किया गया था, जहां उद्देश्य स्वचालन के माध्यम से परीक्षण किया जा सकता है, और पैटर्न प्रस्तुति स्तर के साथ कुछ मुद्दों को संबोधित करते हैं, UI से व्यावसायिक तर्क को अलग करते हैं।
स्क्रीन दृश्य है, जो डेटा प्रदर्शित करता है वह मॉडल है, और प्रस्तुतकर्ता दो को एक साथ हुक कर देता है एमवीपी निम्न जिम्मेदारियों के साथ निम्नलिखित घटकों को शामिल करता है:
मॉडल
(प्रदर्शित होने वाले डेटा को परिभाषित करता है) देखें
- (मॉडल और रूट उपयोगकर्ता अनुरोधों से डेटा को प्रदर्शित करता है प्रस्तुतकर्ता)। प्रस्तुतकर्ता
- (व्यू और मॉडल के बीच बातचीत करता है और उन्हें एक साथ हुक कर देता है)
- देखें (एक वेब पृष्ठ) प्रदर्शित करता है और पृष्ठ नियंत्रणों को अग्रेषण करके (उपयोगकर्ता अनुरोध)
प्रस्तुतकर्ता जो देखें में शुरू किया गया था प्रस्तुतकर्ता
देखें और इसलिए, प्रस्तुतकर्ता का जिम्मेदारी बदलने के लिए मॉडल को पढ़ने और अद्यतन करके इन घटनाओं का जवाब देता है मॉडल और देखें को बाइंड करने के लिए। एमवीसी और
एमवीपी पैटर्न को देखने के बाद, समानता दोनों को प्रत्येक घटक के लिए अलग-अलग ज़िम्मेदारियाँ हैं और वे देखें (यूआई) के बीच विभाजन को बढ़ावा देते हैं और मॉडल (डेटा)। इन पैटर्नों के बीच महत्वपूर्ण अंतर अधिक स्पष्ट होते हैं कि पैटर्न कैसे लागू होते हैं। एमवीपी उन्नत समाधान के लिए लागू करने के लिए एक जटिल पैटर्न हो सकता है, लेकिन निश्चित रूप से एक अच्छा डिज़ाइन किए गए समाधान के रूप में लागू होने पर इसका बहुत लाभ होता है, हालांकि यह सरल समाधानों के लिए उपयुक्त विकल्प नहीं हो सकता है। एमवीवीएम पैटर्न
मॉडल-व्यू-देखेंमॉडेल (एमवीवीएम)
एमवीएमएम
पैटर्न
विशेष रूप से विंडोज प्रस्तुति फाउंडेशन (डब्ल्यूपीएफ) और माइक्रोसॉफ्ट के सीलाइटरलाइट प्लेटफॉर्म के लिए बनाया गया था, और यह हो सकता है सभी पर प्रयोग किया जाता है एक्सएएमएल [आई] प्लेटफार्म WPF एक माइक्रोसॉफ्ट प्रणाली है जो विंडोज-आधारित प्रोग्राम्स में उपयोगकर्ता इंटरफेस प्रदान करता है और इसे पहली बार.NET Framework 3. 0. एमवीएमएम में
एमवीसी
से परिष्कृत किया गया था और इस पद्धति में, देखें व्यवहार, घटनाओं और डेटा बाध्यकारी के साथ सक्रिय है, और देखें देखेंमोडेल के साथ सिंक्रॉइस करता है (जो प्रस्तुति को अलग करने में सक्षम बनाता है और तरीके को उजागर करती है मॉडल एमवीएमएम में तीन मुख्य घटक शामिल हैं: मॉडल
(मान्यता और व्यावसायिक तर्क के साथ डेटा का प्रतिनिधित्व करता है) देखें > (दृश्य उपयोगकर्ता के स्क्रीन पर देखे जाने वाले संरचना, लेआउट और स्वरूप को परिभाषित करने के लिए ज़िम्मेदार है। आदर्श रूप से, दृश्य को एक्सएएमएल के साथ विशुद्ध रूप से परिभाषित किया जाता है, जिसमें एक सीमित कोड वाला पीछे होता है जिसमें व्यापारिक तर्क नहीं होता है।
- देखें और
- देखेंमोडेल के बीच में चलने के लिए मॉडल और दृश्य के साथ ViewModel को सिंक्रनाइज़ करने के लिए displayenables) ViewModel (से दृश्य को अलग करता है ई मॉडल, और डेटा (मॉडल) में हेरफेर करने के तरीकों और आज्ञाओं को उजागर करती है। देखें
- व्यूमोडेल < (डेटा बाध्यकारी और विधियों के माध्यम से) से डेटा प्राप्त करता है, और रनटाइम में,
देखें बदलते समय ईवेंट में जवाब देना होगा ViewModel । देखेंमोडेल देखें और
मॉडल के बीच मध्यस्थता और देखें तर्क को नियंत्रित करता है यह मॉडल के साथ इंटरैक्ट करता है - मॉडल < से डेटा लेता है और इसे प्रदर्शित करने के लिए देखें ये घटक एक-दूसरे से अलग हो जाते हैं, जिससे वे किसी भी अन्य घटक को प्रभावित किए बिना स्वतंत्र रूप से काम कर सकते हैं, इकाई परीक्षण को अलग कर सकते हैं, और उन्हें स्वैप कर सकते हैं। इस संरचना से मॉडल और अन्य घटकों को स्वतंत्र रूप से विकसित करने की अनुमति मिलती है, डेवलपर्स को समवर्ती समाधान के विभिन्न पहलुओं पर काम करने की इजाजत देता है। उदाहरण के लिए, जहां डिजाइनर देखें पर काम कर रहे हैं, वे अन्य घटकों तक पहुँच की आवश्यकता के बिना डेटा नमूने भी बनाते हैं। यह यूजर इंटरफेस का आसान रीडिज़ाइन की सुविधा देता है क्योंकि
देखें
को एक्सएएमएल में लागू किया गया है। जैसा कि एमवीपी < के साथ पहले उल्लेख किया गया है, सरल समाधानों को वास्तुकला और डिजाइन पैटर्न की आवश्यकता नहीं होगी, जैसे "हैलो वर्ल्ड!"किसी भी पैटर्न का पालन करने के लिए बहुत बुनियादी है; हालांकि, जैसा कि अधिक सुविधाएँ, कार्य, और घटकों को पेश किया जाता है, आवेदन की जटिलता बढ़ जाती है और ऐसा कोड भी होता है जिसे प्रबंधित करने की आवश्यकता होती है। सारांश में यूजर इंटरफेस विकास की शुरुआत के बाद से, विकास प्रक्रिया को आसान बनाने के लिए डिजाइन पैटर्न तेजी से लोकप्रिय होते जा रहे हैं, आवेदन अधिक स्केलेबल और यह आसान परीक्षण की सुविधा प्रदान करता है। एमवीपी और एमवीवीएम पैटर्न के बीच स्पष्ट अंतर: दोनों में
एमवीपी और एमवीएमएम
,
देखें < आवेदन के लिए प्रवेश बिंदु है >
एमवीपी
- में, देखें और प्रस्तुतकर्ता के बीच एक-से-एक मैपिंग है, जहां एमवीएमएम में, रिश्ते एक है
- देखें और देखेंमॉडेल के बीच में से कई एमवीपी मुख्य रूप से विंडोज फॉर्म और विंडोज फोन एप्लीकेशन के लिए प्रयोग किया जाता है और एमवीएमएम सिल्वरलाइट, डब्लूपीएफ, नॉकआउट / अंगुलेज एस आदि के लिए डिज़ाइन किया गया है।