क्या MVC केवल वेब पर लागू होता है


14

जब भी मैं मॉडल व्यू कंट्रोलर ( एमवीसी ) के बारे में डेवलपर्स से बात करता हूं, तो यह लगभग और तात्कालिक होता है, वे कहते हैं कि आप यूआरएल से अनुरोध करते हैं कि सर्वर एक इकाई (मॉडल) का निर्माण करे और आपको उस मॉडल का दृश्य प्रतिनिधित्व प्रदान करे।

  • तो क्या इसका मतलब यह है कि एमवीसी केवल वेब के लिए है या मैं ऐसे लोगों से मिल रहा हूं जो सिर्फ डेवलपर हैं जो वेब एप्लिकेशन लिखने के लिए एमवीसी को नियुक्त करते हैं?

  • डेस्कटॉप शैली अनुप्रयोगों पर MVC के लिए उपयोग हैं?

  • मैं प्रतिमान के लिए नया हूं और एमवीसी को किसी भी सुपर-सेट के बारे में जानना चाहूंगा


1
क्या आपने 'mvc' के लिए Programmers.SE या स्टैक ओवरफ्लो टैग विकी की जांच की?
gnat

3
@ वागट हां मैंने किया था
दीपटेकटनस

6
तब आप शायद पहले से ही जानते हैं कि आपके सवाल का जवाब नहीं है?
gnat

4
@ गंभीरता से NO, मैं MVC के लिए पूरी तरह से नया हूँ (जैसा कि कहा गया है) और MVC के बारे में कभी नहीं इस्तेमाल किया है या सुना है (कुछ कान जो मुझे मिला है) MVC के लिए विंडोज़ अनुप्रयोगों पर लागू किया जा रहा है या डाउनलोड पृष्ठ पर एक एमवीसी बैज को स्पोर्ट करने वाले एप्लिकेशन का उपयोग किया है। क्षमा करें यदि प्रश्न मूर्खतापूर्ण था, लेकिन मेरे लिए यह पहेली है
Deeptechtons

MVC के इतिहास को सीखने के लिए बहुत सारे अच्छे संसाधन हैं लेकिन मुझे यह ग़लतफ़हमी बहुत दिखाई देती है, इसलिए मैंने अपने ब्लॉग blog.kutulu.org/2012/01/mvc-mvp-mvv-mvpvm-lmnop-wtf
कुटुलुमाइक

जवाबों:


22

MVC एक पैटर्न है। सभी प्रोग्रामिंग में पैटर्न लागू होते हैं। MVC एक वेब संदर्भ में बहुत अच्छी तरह से काम करने के लिए होता है।

जैसा कि gnat बताते हैं कि सिर्फ mvc टैग पर एक नज़र है और आप इसे लागू होने के कई उदाहरण देखेंगे।


5
यह कुंजी है। MVC वेब अनुप्रयोगों में वास्तव में अच्छी तरह से काम करता है, और वास्तव में इस कारण का एक बड़ा हिस्सा है कि आधुनिक एमवीसी-आधारित रूपरेखाएं (जैसे रेल, Django और ASP.NET MVC) क्यों लोकप्रिय हैं। यह अन्य संदर्भों (जैसे डेस्कटॉप ऐप्स) में भी काम करता है, लेकिन दृश्य और नियंत्रक का एक साफ पृथक्करण रखना कठिन होता है, इसलिए वेरिएंट जो कि मॉडल-प्रतिनिधि (जैसे स्विंग द्वारा उपयोग किए गए) या विभाजन जहां परिवर्तन होता है, व्यू-कंट्रोलर सेपरेशन को हटा देता है जैसे कि डेस्कटॉप ऐप्लिकेशन में मॉडल-व्यू-व्यूमॉडल (ज्यादातर .Net WPF ऐप्स द्वारा प्रयुक्त) अधिक सामान्य हैं।
केविन कैथार्ट

यदि आप एक नियंत्रक क्या करता है के मूल स्मॉलटाक विवरण को देखते हैं - मॉडल के लिए संदेशों में उपयोगकर्ता इनपुट का अनुवाद करें - विंडोज स्वयं मूल रूप से एक बड़ा नियंत्रक है; यही कारण है कि MVC एक पैटर्न के रूप में विंडोज यूआई अनुप्रयोगों के साथ बहुत अच्छी तरह से मेष नहीं करता है। गैर-विंडोज सिस्टम के लिए यूआई फ्रेमवर्क में इसका बहुत अधिक उपयोग किया गया है।
कुटलुमाइक

@MichaelEdenfield वास्तव में नहीं; आप MVC और WinForms को एक साथ कर सकते हैं, हालांकि MVP वहां अधिक लोकप्रिय है, लेकिन MVP वैसे भी MVC का एक प्रकार है।
एंडी

45

यह देखते हुए कि MVC 1977 से है, और वेब केवल 1991 में आविष्कार किया गया था, यह बहुत स्पष्ट होना चाहिए कि MVC वेब के लिए ही नहीं है


30
यह उत्तर की एक अच्छी शुरुआत है, लेकिन मुंह में कड़वा स्वाद है।
निकोलस सी।

2
सही और कर्कश। उत्तम सामग्री!
टॉम हॉल्टिन -

1
"1982 में इंटरनेट प्रोटोकॉल सूट (टीसीपी / आईपी) को मानकीकृत किया गया था और इंटरनेट नामक पूरी तरह से परस्पर टीसीपी / आईपी नेटवर्क की एक विश्व व्यापी नेटवर्क की अवधारणा पेश की गई थी।" विकी । यदि आप नेटस्केप का मतलब है, तो ठीक है ... लेकिन "वेब" उससे पहले मौजूद था।
jmq

4
@jmquigley "इंटरनेट" और "वेब" दो बहुत अलग चीजें हैं।
एरिक किंग

1
@jmq 1977 हालांकि STILL 1982 से पहले का है, और जैसा कि किसी और ने वेब = इंटरनेट पर बताया है। वेब वास्तव में DIDN'T 1991 से पहले मौजूद नहीं है।
एंडी

9

नहीं, OS X और iOS के लिए विकास मॉडल व्यू कंट्रोलर पैटर्न का उपयोग करता है।


2
अंत में, कमेंट्री के बिना पहले और दूसरे अंक का उत्तर।
जेएफओ

8

Microsoft वातावरण में प्रश्न पूछें और कई लोग मान लेंगे कि आप का मतलब Asp.Net MVC है जो विशेष रूप से वेब के लिए MVC कार्यान्वयन है।

दुर्भाग्य से ऐसे बहुत से लोग हैं जो महसूस नहीं करते हैं कि यह एमवीसी पैटर्न का कार्यान्वयन है और उन्हें लगता है कि वे विनिमेय शब्द हैं, जो "केवल वेब" की धारणा की ओर जाता है।


3
+1 यह एक कार्यप्रणाली के बाद एक मंच के नामकरण के साथ समस्या है। जब लोगों को पहले मंच पर लाया जाता है तो वे भेद को देखने में विफल होते हैं।
मैटडिवी

@ इसने यह समझाया कि क्यों अन्य डेवलपर्स हमेशा वेब के बारे में कहने के लिए उपयोग करते हैं जब एमवीसी विषय होता है
दीप्टेकटॉन

1
कृपया Microsoft डेवलपर को बेवकूफ बनाने से रोकें, धन्यवाद।
एंडी

@Andy - यह MS डेवलपर को कोसने वाला नहीं था, मैं खुद एक Asp.Net MVC डेवलपर हूं, और मैं मूल उत्तर से खड़ा हूं। मैंने "सभी" लोगों को, या "सभी" .net डेवलपर्स को नहीं कहा, बस एक धारणा या गलती का अवलोकन जो मैंने कई लोगों को बनाते देखा है। धन्यवाद।
ओज

2

कम से कम जहां तक ​​मुझे पता है, एमवीसी का पहला कार्यान्वयन स्मालटाक में था। यह स्मालटाक -80 में निश्चित रूप से मौजूद था। हालाँकि, मेरे पास इसे साबित करने के लिए कोई दस्तावेज नहीं है, मेरा मानना ​​है कि (या फिर कुछ ऐसा ही कुछ) तब से कुछ वर्षों के लिए स्मॉलटाक में था।

अधिकांश OO GUI फ्रेमवर्क में MVC के कम से कम कुछ प्रकार शामिल हैं। मुझे यकीन नहीं है, हालांकि, वास्तव में इस मामले में "सुपरसेट" का क्या अर्थ होगा। यह कहना थोड़ा कठिन है कि क्या कोई दिया गया वेरिएंट MVC का सुपरसेट, सबसेट या पीयर है, लेकिन मैं उनमें से ज्यादातर साथियों पर विचार करना चाहूंगा।

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



1

इसलिए इस क्षेत्र में कई अलग-अलग डिज़ाइन पैटर्न हैं।

  • मॉडल दृश्य प्रस्तुतकर्ता (mvp)
  • मॉडल व्यू व्यू प्रस्तुतकर्ता (mvvp)
  • मॉडल दृश्य नियंत्रक
  • मॉडल 2

और इसी तरह। इन वर्षों में, इनको आपस में जोड़ा गया है, एक साथ मैश किया गया है, परिवर्तित किया गया है और संदर्भों की एक विस्तृत विविधता में लागू किया गया है। यहाँ महत्वपूर्ण बिट, यह है कि 1977 से एमवीसी डिज़ाइन पैटर्न काफी बदल गया है, और अब वेबसाइड के फ्रेमवर्क द्वारा उपयोग किया जाने वाला डिज़ाइन पैटर्न नहीं है। मूल स्मॉलटॉक कार्यान्वयन में एक उदाहरण के रूप में मॉडल परिवर्तनों के लिए दृश्य का निरीक्षण करेगा, जो अब ऐसा नहीं है क्योंकि सर्वरसाइड केवल उपयोगकर्ता ब्राउज़र में HTML तत्वों का निरीक्षण नहीं कर सकता है। इसके बजाय अगर दृश्य बदलता है, तो दृश्य नियंत्रक को एक अनुरोध भेजेगा जो तब दृश्य को अपडेट करेगा। फिर से मूल एमवीसी कार्यान्वयन का पालन नहीं किया जाता है, क्योंकि मॉडल को अपडेट करने का अर्थ यह होगा कि मॉडल पर निर्भर सभी विचारों को अपडेट किया जाएगा।

आधुनिक वेब फ्रेमवर्क एक सरल तीन स्तरीय वास्तुकला का अनुसरण करता है जिसे मॉडल 2 वास्तुकला के रूप में भी जाना जाता है।

वेब पर वास्तविक एमवीसी आर्किटेक्चर के निश्चित उदाहरण हैं, लेकिन ये अक्सर क्लाइंट साइड ही होते हैं, सर्वर से जुड़े होते हैं जो मॉडल 2 आर्किटेक्चर का अनुसरण करते हैं, जैसा कि विचार xml और json हैं, और परिवर्तनों के लिए नहीं देखा गया है। ग्राहक पक्ष के शुद्ध mvc आर्किटेक्चर के उदाहरण स्नेहा टच और स्प्राउटकोर हैं।

यदि आपके पास ब्राउज़र में MVC है, तो सर्वर पर mvc पसंद है, और mvc जैसे डेटा लेयर, आपके पास एक hierarchial mvc कार्यान्वयन है।

ध्यान दें। मैंने केवल वेब फ्रेमवर्क के बारे में बात की है, एमवीसी के अन्य कार्यान्वयन जैसे जावा स्विंग और फ्लेक्स में अन्य कार्यान्वयन अंतर हैं।


निश्चित रूप से समझ में नहीं आता है कि लोग दूसरों को वोट क्यों देते हैं, अगर कुछ गलत है तो कृपया उन्हें बताएं और अपना दृष्टिकोण ठीक करने का मौका दें। यदि वे इस विषय पर ज्ञान नहीं रखते हैं तो एक अच्छा शिक्षक उन्हें सही स्रोत के लिए निर्देशित करेगा जब तक कि वह इसे सही न समझें तब तक उसे हराएं नहीं !!
दीप्टेक्टन्स

प्रश्न मानता है कि mvc और वेब अच्छी तरह से काम करते हैं और गैर वेब mvc के लिए अनुरोध करते हैं, इसलिए जब आप केवल एक वेब संदर्भ में mvc का उदाहरण देते हैं: -1
hildred

1

आपको एक बात पता होनी चाहिए कि एमवीसी के कई फ्लेवर हैं क्योंकि एमवीसी को लागू करने का दावा करने वाली रूपरेखाएँ हैं।

अधिकांश इस तथ्य पर सहमत हैं कि मॉडल कुछ राज्य रखता है और दृश्य इसे प्रस्तुत करता है। लेकिन नियंत्रक की बहुत अलग भूमिकाएँ हैं।

स्मॉलटॉक में, जहां यह पहली बार वर्णित किया गया था, मॉडल आपके एप्लिकेशन, डेटा और व्यावसायिक विधियों का मूल है। दृश्य अनुप्रयोग (उर्फ मॉडल) की स्थिति का एक चित्रमय प्रतिनिधित्व है, और नियंत्रक उपयोगकर्ता इनपुट, माउस और कीबोर्ड घटनाओं का प्रबंधन करता है। मिसाल के तौर पर कंट्रोलर, कीबोर्ड इवेंट्स को व्यू एलिमेंट पर फोकस करता है।

.Jsp पृष्ठों में, मॉडल ज्यादातर डेटा होता है, व्यू रेंडर करता है कि मॉडल को HTML और नियंत्रक इसे रेंडर करने के लिए मॉडल को उचित व्यू में रूट करता है।

इसलिए, आपके प्रश्न का उत्तर देने के लिए, जबकि MVC का उपयोग स्टैंडअलोन अनुप्रयोगों (जावा, .Net, फ्लेक्स) और वेब (jsp पृष्ठों) दोनों पर किया जाता है, यह एक बहुत अलग बात है। इसका मतलब है कि आपके द्वारा ज्ञात एमवीसी का उपयोग स्टैंडअलोन अनुप्रयोगों में नहीं किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.