मॉडल-दृश्य-प्रस्तोता: Difference between revisions
(Created page with "{{Short description|Software design pattern}} File:Model View Presenter GUI Design Pattern.png|thumb|आरेख जो मॉडल-व्यू-प्रस्तुत...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Software design pattern}} | {{Short description|Software design pattern}} | ||
[[File:Model View Presenter GUI Design Pattern.png|thumb|आरेख जो मॉडल-व्यू- | [[File:Model View Presenter GUI Design Pattern.png|thumb|आरेख जो मॉडल-व्यू-प्रस्तोता (एमवीपी) जीयूआई डिज़ाइन पैटर्न को दर्शाता है]]'''मॉडल-व्यू-प्रस्तोता''' '''(एमवीपी)''' मॉडल-व्यू-कंट्रोलर (एमवीसी) [[वास्तुशिल्प पैटर्न]] की व्युत्पत्ति है और इसका उपयोग अधिकतर यूजर इंटरफेस के निर्माण के लिए किया जाता है। | ||
एमवीपी में, | एमवीपी में, प्रस्तोता "मिडिल मैन" की कार्यक्षमता मानता है। एमवीपी में, सभी प्रेजेंटेशन तर्क प्रस्तोता को भेज दिए जाते हैं।<ref>{{cite web|url=https://developers.google.com/web-toolkit/articles/testing_methodologies_using_gwt|title=जीडब्ल्यूटी परियोजना|website=developers.google.com}}</ref> | ||
== इतिहास == | |||
मॉडल-व्यू-प्रस्तोता सॉफ़्टवेयर पैटर्न की शुरुआत 1990 के दशक की शुरुआत में ऐप्पल, [[आईबीएम]] और [[ हेवलेट पैकर्ड |हेवलेट पैकर्ड]] के संयुक्त उद्यम टैलिजेंट में हुई थी।<ref>Needs research - This model was in use in the ERP space (Lawson Software Inc.) long before this.</ref> एमवीपी टैलिजेंट के C++-आधारित कॉमनप्वाइंट एन्वॉयरन्मेंट में अनुप्रयोग विकास के लिए अंतर्निहित प्रोग्रामिंग मॉडल है। इस पैटर्न को बाद में टैलिजेंट द्वारा [[जावा (प्रोग्रामिंग भाषा)|जावा]] में स्थानांतरित कर दिया गया और टैलिजेंट सीटीओ माइक पोटेल द्वारा एक पेपर में लोकप्रिय बनाया गया है।<ref> | |||
[http://www.wildcrest.com/Potel/Portfolio/mvp.pdf "MVP: Model-View-Presenter. The Taligent Programming Model for C++ and Java." Mike Potel]</ref> | |||
1998 में टैलिजेंट के बंद होने के बाद, [[डॉल्फिन स्मॉलटॉक]] के एंडी बोवर और ब्लेयर मैकग्लाशन ने अपने स्मॉलटॉक यूजर इंटरफेस फ्रेमवर्क के लिए आधार बनाने के लिए एमवीपी पैटर्न को अनुकूलित किया।<ref> | 1998 में टैलिजेंट के बंद होने के बाद, [[डॉल्फिन स्मॉलटॉक]] के एंडी बोवर और ब्लेयर मैकग्लाशन ने अपने स्मॉलटॉक यूजर इंटरफेस फ्रेमवर्क के लिए आधार बनाने के लिए एमवीपी पैटर्न को अनुकूलित किया।<ref> | ||
[http://www.object-arts.com/downloads/papers/TwistingTheTriad.PDF "Twisting the Triad. The evolution of the Dolphin Smalltalk MVP application framework." Andy Bower, Blair McGlashan]</ref> 2006 में, [[माइक्रोसॉफ्ट]] ने .NET फ्रेमवर्क में यूजर इंटरफेस प्रोग्रामिंग के लिए अपने दस्तावेज़ीकरण और उदाहरणों में एमवीपी को शामिल करना शुरू किया।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/magazine/cc188690.aspx|title=एमएसडीएन पत्रिका अंक|website=msdn.microsoft.com}}</ref><ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ff649571.aspx|title=मॉडल-व्यू-प्रस्तोता (एमवीपी) पैटर्न|website=msdn.microsoft.com}}</ref> | [http://www.object-arts.com/downloads/papers/TwistingTheTriad.PDF "Twisting the Triad. The evolution of the Dolphin Smalltalk MVP application framework." Andy Bower, Blair McGlashan]</ref> 2006 में, [[माइक्रोसॉफ्ट]] ने .NET फ्रेमवर्क में यूजर इंटरफेस प्रोग्रामिंग के लिए अपने दस्तावेज़ीकरण और उदाहरणों में एमवीपी को शामिल करना शुरू किया।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/magazine/cc188690.aspx|title=एमएसडीएन पत्रिका अंक|website=msdn.microsoft.com}}</ref><ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ff649571.aspx|title=मॉडल-व्यू-प्रस्तोता (एमवीपी) पैटर्न|website=msdn.microsoft.com}}</ref> | ||
एमवीपी पैटर्न के विकास और कई वेरिएंट, जिसमें एमवीपी का एमवीसी जैसे अन्य डिजाइन पैटर्न से संबंध शामिल है, पर [[मार्टिन फाउलर (सॉफ्टवेयर इंजीनियर)]] के एक लेख में विस्तार से चर्चा की गई है।<ref> | एमवीपी पैटर्न के विकास और कई वेरिएंट, जिसमें एमवीपी का एमवीसी जैसे अन्य डिजाइन पैटर्न से संबंध शामिल है, पर [[मार्टिन फाउलर (सॉफ्टवेयर इंजीनियर)]] के एक लेख में विस्तार से चर्चा की गई है।<ref> | ||
[http://www.martinfowler.com/eaaDev/uiArchs.html "GUI Architectures" Martin Fowler]</ref> और दूसरा डेरेक ग्रीर द्वारा।<ref>{{cite web|url=http://www.aspiringcraftsman.com/2007/08/25/interactive-application-architecture/|title=इंटरएक्टिव एप्लिकेशन आर्किटेक्चर पैटर्न|website=www.aspiringcraftsman.com}}</ref> | [http://www.martinfowler.com/eaaDev/uiArchs.html "GUI Architectures" Martin Fowler]</ref> और दूसरा डेरेक ग्रीर द्वारा।<ref>{{cite web|url=http://www.aspiringcraftsman.com/2007/08/25/interactive-application-architecture/|title=इंटरएक्टिव एप्लिकेशन आर्किटेक्चर पैटर्न|website=www.aspiringcraftsman.com}}</ref> | ||
Line 17: | Line 18: | ||
एमवीपी एक उपयोगकर्ता इंटरफ़ेस आर्किटेक्चरल पैटर्न (कंप्यूटर विज्ञान) है जिसे [[ परीक्षण स्वचालन ]] यूनिट परीक्षण की सुविधा और प्रस्तुति तर्क में चिंताओं के पृथक्करण में सुधार करने के लिए इंजीनियर किया गया है: | एमवीपी एक उपयोगकर्ता इंटरफ़ेस आर्किटेक्चरल पैटर्न (कंप्यूटर विज्ञान) है जिसे [[ परीक्षण स्वचालन ]] यूनिट परीक्षण की सुविधा और प्रस्तुति तर्क में चिंताओं के पृथक्करण में सुधार करने के लिए इंजीनियर किया गया है: | ||
* मॉडल एक इंटरफ़ेस है जो उपयोगकर्ता इंटरफ़ेस में प्रदर्शित किए जाने वाले या अन्यथा कार्य किए जाने वाले डेटा को परिभाषित करता है। | * मॉडल एक इंटरफ़ेस है जो उपयोगकर्ता इंटरफ़ेस में प्रदर्शित किए जाने वाले या अन्यथा कार्य किए जाने वाले डेटा को परिभाषित करता है। | ||
* दृश्य एक निष्क्रिय इंटरफ़ेस है जो डेटा (मॉडल) प्रदर्शित करता है और उस डेटा पर कार्य करने के लिए उपयोगकर्ता कमांड ([[ घटना (कंप्यूटिंग) ]] को | * दृश्य एक निष्क्रिय इंटरफ़ेस है जो डेटा (मॉडल) प्रदर्शित करता है और उस डेटा पर कार्य करने के लिए उपयोगकर्ता कमांड ([[ घटना (कंप्यूटिंग) ]] को प्रस्तोता तक रूट करता है। | ||
* | * प्रस्तोता मॉडल और दृश्य पर कार्य करता है। यह रिपॉजिटरी (मॉडल) से डेटा पुनर्प्राप्त करता है, और इसे दृश्य में प्रदर्शित करने के लिए प्रारूपित करता है। | ||
आम तौर पर, दृश्य कार्यान्वयन [[उदाहरण (कंप्यूटर विज्ञान)]] ठोस | आम तौर पर, दृश्य कार्यान्वयन [[उदाहरण (कंप्यूटर विज्ञान)]] ठोस प्रस्तोता वस्तु, स्वयं को एक संदर्भ प्रदान करता है। निम्नलिखित सी शार्प (प्रोग्रामिंग भाषा)|सी# कोड एक सरल व्यू कंस्ट्रक्टर प्रदर्शित करता है: | ||
<syntaxhighlight lang="csharp"> | <syntaxhighlight lang="csharp"> | ||
Line 39: | Line 40: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
दृश्य में अनुमत तर्क की डिग्री विभिन्न कार्यान्वयनों के बीच भिन्न होती है। एक चरम पर, दृश्य पूरी तरह से निष्क्रिय है, जो सभी इंटरैक्शन संचालन को | दृश्य में अनुमत तर्क की डिग्री विभिन्न कार्यान्वयनों के बीच भिन्न होती है। एक चरम पर, दृश्य पूरी तरह से निष्क्रिय है, जो सभी इंटरैक्शन संचालन को प्रस्तोता को अग्रेषित करता है। इस फॉर्मूलेशन में, जब कोई उपयोगकर्ता दृश्य की एक ईवेंट विधि को ट्रिगर करता है, तो यह प्रस्तोता की एक विधि को आमंत्रित करने के अलावा कुछ नहीं करता है जिसमें कोई पैरामीटर नहीं होता है और कोई रिटर्न मान नहीं होता है। फिर प्रस्तोता दृश्य इंटरफ़ेस द्वारा परिभाषित विधियों के माध्यम से दृश्य से डेटा पुनर्प्राप्त करता है। अंत में, प्रस्तोता मॉडल पर काम करता है और ऑपरेशन के परिणामों के साथ दृश्य को अपडेट करता है। मॉडल-व्यू-प्रस्तोता के अन्य संस्करण इस संबंध में कुछ अक्षांश की अनुमति देते हैं कि कौन सा वर्ग किसी विशेष इंटरैक्शन, ईवेंट या कमांड को संभालता है। यह अक्सर वेब-आधारित आर्किटेक्चर के लिए अधिक उपयुक्त होता है, जहां दृश्य, जो क्लाइंट के ब्राउज़र पर निष्पादित होता है, किसी विशेष इंटरैक्शन या कमांड को संभालने के लिए सबसे अच्छी जगह हो सकता है। | ||
लेयरिंग के दृष्टिकोण से, | लेयरिंग के दृष्टिकोण से, प्रस्तोता वर्ग को [[बहुस्तरीय वास्तुकला]] प्रणाली में एप्लिकेशन परत से संबंधित माना जा सकता है, लेकिन इसे एप्लिकेशन परत और उपयोगकर्ता इंटरफ़ेस परत के बीच स्वयं की प्रस्तोता परत के रूप में भी देखा जा सकता है। | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
=== .NET === | === .NET === | ||
.NET फ्रेमवर्क|.NET वातावरण किसी भी अन्य विकास वातावरण की तरह एमवीपी पैटर्न का समर्थन करता है। एक ही मॉडल और | .NET फ्रेमवर्क|.NET वातावरण किसी भी अन्य विकास वातावरण की तरह एमवीपी पैटर्न का समर्थन करता है। एक ही मॉडल और प्रस्तोता वर्ग का उपयोग कई इंटरफेस का समर्थन करने के लिए किया जा सकता है, जैसे कि ASP.NET वेब एप्लिकेशन, [[विंडोज़ फॉर्म]] एप्लिकेशन या [[सिल्वरलाइट]] एप्लिकेशन। प्रस्तोता एक इंटरफ़ेस के माध्यम से दृश्य से जानकारी प्राप्त करता है और सेट करता है जिसे इंटरफ़ेस (दृश्य) घटक द्वारा एक्सेस किया जा सकता है। | ||
पैटर्न को मैन्युअल रूप से लागू करने के अलावा, अधिक स्वचालित फैशन में एमवीपी पैटर्न का समर्थन करने के लिए एक मॉडल-व्यू- | पैटर्न को मैन्युअल रूप से लागू करने के अलावा, अधिक स्वचालित फैशन में एमवीपी पैटर्न का समर्थन करने के लिए एक मॉडल-व्यू-प्रस्तोता ढांचे का उपयोग किया जा सकता है। | ||
=== जावा === | === जावा === | ||
Line 78: | Line 79: | ||
* मॉडल-व्यू-नियंत्रक | * मॉडल-व्यू-नियंत्रक | ||
* मॉडल-व्यू-व्यूमॉडल | * मॉडल-व्यू-व्यूमॉडल | ||
* | * प्रस्तोता पहले (सॉफ्टवेयर दृष्टिकोण) | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 07:51, 4 July 2023
मॉडल-व्यू-प्रस्तोता (एमवीपी) मॉडल-व्यू-कंट्रोलर (एमवीसी) वास्तुशिल्प पैटर्न की व्युत्पत्ति है और इसका उपयोग अधिकतर यूजर इंटरफेस के निर्माण के लिए किया जाता है।
एमवीपी में, प्रस्तोता "मिडिल मैन" की कार्यक्षमता मानता है। एमवीपी में, सभी प्रेजेंटेशन तर्क प्रस्तोता को भेज दिए जाते हैं।[1]
इतिहास
मॉडल-व्यू-प्रस्तोता सॉफ़्टवेयर पैटर्न की शुरुआत 1990 के दशक की शुरुआत में ऐप्पल, आईबीएम और हेवलेट पैकर्ड के संयुक्त उद्यम टैलिजेंट में हुई थी।[2] एमवीपी टैलिजेंट के C++-आधारित कॉमनप्वाइंट एन्वॉयरन्मेंट में अनुप्रयोग विकास के लिए अंतर्निहित प्रोग्रामिंग मॉडल है। इस पैटर्न को बाद में टैलिजेंट द्वारा जावा में स्थानांतरित कर दिया गया और टैलिजेंट सीटीओ माइक पोटेल द्वारा एक पेपर में लोकप्रिय बनाया गया है।[3]
1998 में टैलिजेंट के बंद होने के बाद, डॉल्फिन स्मॉलटॉक के एंडी बोवर और ब्लेयर मैकग्लाशन ने अपने स्मॉलटॉक यूजर इंटरफेस फ्रेमवर्क के लिए आधार बनाने के लिए एमवीपी पैटर्न को अनुकूलित किया।[4] 2006 में, माइक्रोसॉफ्ट ने .NET फ्रेमवर्क में यूजर इंटरफेस प्रोग्रामिंग के लिए अपने दस्तावेज़ीकरण और उदाहरणों में एमवीपी को शामिल करना शुरू किया।[5][6]
एमवीपी पैटर्न के विकास और कई वेरिएंट, जिसमें एमवीपी का एमवीसी जैसे अन्य डिजाइन पैटर्न से संबंध शामिल है, पर मार्टिन फाउलर (सॉफ्टवेयर इंजीनियर) के एक लेख में विस्तार से चर्चा की गई है।[7] और दूसरा डेरेक ग्रीर द्वारा।[8]
सिंहावलोकन
एमवीपी एक उपयोगकर्ता इंटरफ़ेस आर्किटेक्चरल पैटर्न (कंप्यूटर विज्ञान) है जिसे परीक्षण स्वचालन यूनिट परीक्षण की सुविधा और प्रस्तुति तर्क में चिंताओं के पृथक्करण में सुधार करने के लिए इंजीनियर किया गया है:
- मॉडल एक इंटरफ़ेस है जो उपयोगकर्ता इंटरफ़ेस में प्रदर्शित किए जाने वाले या अन्यथा कार्य किए जाने वाले डेटा को परिभाषित करता है।
- दृश्य एक निष्क्रिय इंटरफ़ेस है जो डेटा (मॉडल) प्रदर्शित करता है और उस डेटा पर कार्य करने के लिए उपयोगकर्ता कमांड (घटना (कंप्यूटिंग) को प्रस्तोता तक रूट करता है।
- प्रस्तोता मॉडल और दृश्य पर कार्य करता है। यह रिपॉजिटरी (मॉडल) से डेटा पुनर्प्राप्त करता है, और इसे दृश्य में प्रदर्शित करने के लिए प्रारूपित करता है।
आम तौर पर, दृश्य कार्यान्वयन उदाहरण (कंप्यूटर विज्ञान) ठोस प्रस्तोता वस्तु, स्वयं को एक संदर्भ प्रदान करता है। निम्नलिखित सी शार्प (प्रोग्रामिंग भाषा)|सी# कोड एक सरल व्यू कंस्ट्रक्टर प्रदर्शित करता है:
public class Presenter : IPresenter {
public Presenter(IView view) {
...
}
}
public class View : IView
{
private IPresenter _presenter;
public View()
{
_presenter = new Presenter(this);
}
}
दृश्य में अनुमत तर्क की डिग्री विभिन्न कार्यान्वयनों के बीच भिन्न होती है। एक चरम पर, दृश्य पूरी तरह से निष्क्रिय है, जो सभी इंटरैक्शन संचालन को प्रस्तोता को अग्रेषित करता है। इस फॉर्मूलेशन में, जब कोई उपयोगकर्ता दृश्य की एक ईवेंट विधि को ट्रिगर करता है, तो यह प्रस्तोता की एक विधि को आमंत्रित करने के अलावा कुछ नहीं करता है जिसमें कोई पैरामीटर नहीं होता है और कोई रिटर्न मान नहीं होता है। फिर प्रस्तोता दृश्य इंटरफ़ेस द्वारा परिभाषित विधियों के माध्यम से दृश्य से डेटा पुनर्प्राप्त करता है। अंत में, प्रस्तोता मॉडल पर काम करता है और ऑपरेशन के परिणामों के साथ दृश्य को अपडेट करता है। मॉडल-व्यू-प्रस्तोता के अन्य संस्करण इस संबंध में कुछ अक्षांश की अनुमति देते हैं कि कौन सा वर्ग किसी विशेष इंटरैक्शन, ईवेंट या कमांड को संभालता है। यह अक्सर वेब-आधारित आर्किटेक्चर के लिए अधिक उपयुक्त होता है, जहां दृश्य, जो क्लाइंट के ब्राउज़र पर निष्पादित होता है, किसी विशेष इंटरैक्शन या कमांड को संभालने के लिए सबसे अच्छी जगह हो सकता है।
लेयरिंग के दृष्टिकोण से, प्रस्तोता वर्ग को बहुस्तरीय वास्तुकला प्रणाली में एप्लिकेशन परत से संबंधित माना जा सकता है, लेकिन इसे एप्लिकेशन परत और उपयोगकर्ता इंटरफ़ेस परत के बीच स्वयं की प्रस्तोता परत के रूप में भी देखा जा सकता है।
कार्यान्वयन
.NET
.NET फ्रेमवर्क|.NET वातावरण किसी भी अन्य विकास वातावरण की तरह एमवीपी पैटर्न का समर्थन करता है। एक ही मॉडल और प्रस्तोता वर्ग का उपयोग कई इंटरफेस का समर्थन करने के लिए किया जा सकता है, जैसे कि ASP.NET वेब एप्लिकेशन, विंडोज़ फॉर्म एप्लिकेशन या सिल्वरलाइट एप्लिकेशन। प्रस्तोता एक इंटरफ़ेस के माध्यम से दृश्य से जानकारी प्राप्त करता है और सेट करता है जिसे इंटरफ़ेस (दृश्य) घटक द्वारा एक्सेस किया जा सकता है।
पैटर्न को मैन्युअल रूप से लागू करने के अलावा, अधिक स्वचालित फैशन में एमवीपी पैटर्न का समर्थन करने के लिए एक मॉडल-व्यू-प्रस्तोता ढांचे का उपयोग किया जा सकता है।
जावा
जावा (प्रोग्रामिंग भाषा) (सार विंडो टूलकिट /स्विंग (जावा)/मानक विजेट टूलकिट ) एप्लिकेशन में, एमवीपी पैटर्न का उपयोग यूजर इंटरफेस क्लास को व्यू इंटरफेस लागू करने की अनुमति देकर किया जा सकता है।
उसी दृष्टिकोण का उपयोग जावा वेब-आधारित अनुप्रयोगों के लिए किया जा सकता है, क्योंकि आधुनिक जावा घटक-आधारित वेब फ्रेमवर्क मोटे क्लाइंट के समान घटक दृष्टिकोण का उपयोग करके क्लाइंट-साइड लॉजिक के विकास की अनुमति देते हैं।
Google वेब टूलकिट में एमवीपी को लागू करने के लिए केवल यह आवश्यक है कि कुछ घटक व्यू इंटरफ़ेस को लागू करें। वाडिन या इको (फ्रेमवर्क) वेब फ्रेमवर्क का उपयोग करके भी यही दृष्टिकोण संभव है।
जावा फ्रेमवर्क में निम्नलिखित शामिल हैं:
- जावाएफएक्स
- प्रतिध्वनि (ढांचा)
- गूगल वेब टूलकिट
- जेफ़ेस
- स्विंग (जावा)
- वादिन
- ZK (ढांचा)
पीएचपी
PHP के लचीले रनटाइम वातावरण के कारण, एप्लिकेशन लॉजिक के दृष्टिकोण की व्यापक संभावनाएं हैं। मॉडल परत का कार्यान्वयन अंतिम एप्लिकेशन प्रोग्रामर पर छोड़ दिया गया है।
PHP फ्रेमवर्क में निम्नलिखित शामिल हैं:
यह भी देखें
- बहुस्तरीय वास्तुकला
- मॉडल-व्यू-नियंत्रक
- मॉडल-व्यू-व्यूमॉडल
- प्रस्तोता पहले (सॉफ्टवेयर दृष्टिकोण)
संदर्भ
- ↑ "जीडब्ल्यूटी परियोजना". developers.google.com.
- ↑ Needs research - This model was in use in the ERP space (Lawson Software Inc.) long before this.
- ↑ "MVP: Model-View-Presenter. The Taligent Programming Model for C++ and Java." Mike Potel
- ↑ "Twisting the Triad. The evolution of the Dolphin Smalltalk MVP application framework." Andy Bower, Blair McGlashan
- ↑ "एमएसडीएन पत्रिका अंक". msdn.microsoft.com.
- ↑ "मॉडल-व्यू-प्रस्तोता (एमवीपी) पैटर्न". msdn.microsoft.com.
- ↑ "GUI Architectures" Martin Fowler
- ↑ "इंटरएक्टिव एप्लिकेशन आर्किटेक्चर पैटर्न". www.aspiringcraftsman.com.