MVC एक डिज़ाइन पैटर्न या आर्किटेक्चरल पैटर्न है


109

Sun and Msdn के अनुसार यह एक डिज़ाइन पैटर्न है।

विकिपीडिया के अनुसार यह एक वास्तुशिल्प पैटर्न है

डिजाइन पैटर्न की तुलना में, वास्तुशिल्प पैटर्न बड़े पैमाने पर होते हैं। (विकिपीडिया - स्थापत्य पैटर्न )

या यह एक वास्तुशिल्प पैटर्न है जिसमें एक डिजाइन पैटर्न भी है?

कोनसा वाला सत्य है ?


1
इसके लिए एक सही उत्तर होना चाहिए ...
माइक जी

डेव एट प्रोडक्ट मैडनेस के अनुसार, एमवीसी एक डिज़ाइन पैटर्न है, और ऐसा ही रोबॉटलीग्स है। : P
andygoestohollywood

जवाबों:


56

MVC एक वास्तुशिल्प पैटर्न का अधिक है, लेकिन पूर्ण अनुप्रयोग के लिए नहीं। MVC ज्यादातर किसी एप्लिकेशन के UI / इंटरैक्शन लेयर से संबंधित होता है। आपको अभी भी व्यावसायिक तर्क परत की आवश्यकता है, शायद कुछ सेवा परत और डेटा एक्सेस परत। यही है, यदि आप n- स्तरीय दृष्टिकोण में हैं।


16
हां, मैं कहूंगा कि एमवीसी आपके प्रेजेंटेशन टियर के लिए एक आर्किटेक्चरल पैटर्न है।
मुर्की

8
मैं "MVC ज्यादातर आवेदन के UI / इंटरैक्शन परत" से संबंधित है। "एम" / MVC में मॉडल है व्यापार परत है, जो आप शायद कई स्तरों में विभाजित करना चाहते हैं चाहते हैं।
mewm

हां यह उत्तर गलत है। MVC बिल्कुल UI / इंटरैक्शन के बारे में नहीं है। आप पूरी तरह से सामने के किनारे पर और पीछे के किनारे पर पीवीसी लगा सकते हैं, शुरुआत में अक्सर सिर्फ एक html / js या एक .jsp या एक .phtml होता है और सर्वर कंट्रोलर और मॉडल को परिभाषित करता है। निर्गमन JSP (दृश्य), JavaBeans (मॉडल), सर्वलेट (नियंत्रक)। सभी प्रसिद्ध php ढांचे (सिम्फनी, ज़ेंड, केक आदि) के साथ एक ही अवधारणा। लेकिन Nowaday फ्रंटएंड फ्रेमवर्क बैक एंड एप्लीकेशन की तरह दिखता है और आधुनिक जावास्क्रिप्ट फ्रेमवर्क mvc (html आपके विचार, नियंत्रक आपकी स्क्रिप्ट, और आपके जेएस ऑब्जेक्ट्स को इकाई के रूप में मॉडल करते हैं) का उपयोग करते हैं
amdev

40

उनमें से एक को सच क्यों होना चाहिए?

बिंदु के आधार पर, दोनों सत्य हो सकते हैं।

MVC एक वास्तुशिल्प पैटर्न हो सकता है, अगर यह एप्लिकेशन आर्किटेक्चर का आधार बनता है।

इसे केवल एक डिज़ाइन पैटर्न, एक अमूर्त धारणा के रूप में देखा जा सकता है जो किसी भी अनुप्रयोग पर लागू होता है।


27

डिज़ाइन पैटर्न कहता है कि कोड को प्रभावी ढंग से कैसे लिखा जाए ( कोड मेट्रिक्स पर विचार )।

कुछ लाभ:

  1. आसानी से बनाए रखने योग्य
  2. उच्च पुन: प्रयोज्य
  3. अमूर्तता के कारण पठनीय

वास्तुशिल्प पैटर्न कहते हैं कि संसाधनों का प्रभावी ढंग से उपयोग कैसे किया जाए।

  1. समानांतर कार्य निष्पादन जैसे प्रोग्रामर और ग्राफिक डिजाइनर समानांतर काम कर सकते हैं।
  2. सॉफ्टवेयर बनाने के लिए कई तकनीकों का उपयोग किया जा सकता है।

MVC में, ए)। जावास्क्रिप्ट जावास्क्रिप्ट का उपयोग करके दृश्य बनाए जा सकते हैं और साथ ही HTML का उपयोग किया जा सकता है b)। नियंत्रकों को .NET फ्रेमवर्क और c) लिखा जा सकता है मॉडल जावा में लिखे जा सकते हैं - एक जावा सेवा का उपयोग किया जा सकता है जो केवल json डेटा देता है।

डिज़ाइन पैटर्न में, एक पैटर्न लागू नहीं किया जा सकता है जिसमें कोड को कई तकनीकों में लिखा जा सकता है जैसे कि Java में AdminUser वर्ग, C # में ग्राहक वर्ग, Php में भागीदार वर्ग और Ruby :) में एक कारखाना पैटर्न; हम्म्..तो आसान ?;


6

मुझे पता है कि कुछ समय पहले इसका उत्तर दिया गया था, लेकिन किसी ने अभी तक उस पुस्तक का उल्लेख नहीं किया है जिसने एमवीसी को प्रसिद्ध बनाया: पैटर्न-ओरिएंटेड सॉफ्टवेयर आर्किटेक्चर (POSA), Buschmann द्वारा, एट अल 1996 में प्रकाशित किया गया। हालांकि व्यापक रूप से डिज़ाइन पैटर्न पुस्तक के रूप में नहीं पढ़ा गया। , गामा द्वारा, एट अल, POSA पैटर्न समुदाय द्वारा उपयोग की जाने वाली मूलभूत पुस्तकों में से एक है।

ओह, और POSA बहुत स्पष्ट रूप से एक वास्तुशिल्प पैटर्न के रूप में MVC की पहचान करता है। मेरा कूबड़ यह है कि एमएस और सन बस मैला हो रहे हैं और हर पैटर्न को "डिजाइन पैटर्न" कह रहे हैं।


3

मुझे लगता है कि दोनों सच हैं। यदि आप रूबी जैसे पटरियों पर एमवीसी की एक विशेष तात्कालिकता को देख रहे हैं , तो तात्कालिकता एक डिजाइन पैटर्न से अधिक है। यदि आप MVC को एक सामान्य अवधारणा के रूप में देखते हैं , तो यह एक वास्तुशिल्प पैटर्न से अधिक है।


3

कक्षाओं के मॉडल / दृश्य / नियंत्रक (MVC) के अंदर डिजाइन पैटर्न शामिल हैं और यह सीमित नहीं हो सकता है:

  • ऑब्जर्वर , ऑब्जेक्ट्स को डिकूप करना ताकि एक (मॉडल) में बदलाव दूसरों की संख्या (विचारों) को प्रभावित किए बिना दूसरों के विवरण (विचार) को जानने के लिए किसी अन्य (विचार) को प्रभावित कर सके।

  • समग्र , जो हमें एक समूह वस्तु (एक समग्र दृष्टिकोण) का इलाज करने की सुविधा देता है, जैसे कि हम इसकी एक व्यक्तिगत वस्तु (दृश्य घटक) का इलाज करते हैं।

  • रणनीति , जहां एक दृश्य एक विशेष प्रतिक्रिया रणनीति को लागू करने के लिए एक नियंत्रक उपवर्ग का एक उदाहरण का उपयोग करता है; एक अलग रणनीति को लागू करने के लिए, बस एक अलग प्रकार के नियंत्रक के साथ उदाहरण को बदलें।

  • फैक्टरी विधि , एक दृश्य के लिए डिफ़ॉल्ट नियंत्रक वर्ग को निर्दिष्ट करना।

  • डेकोरेटर , एक दृश्य में स्क्रॉलिंग जोड़ना।


संदर्भ

  • पेज 4 से 6 (स्मॉलटाक एमवीसी में धारा 1.2 डिजाइन पैटर्न)
  • पृष्ठ 293 से 304 (ऑब्जर्वर डिज़ाइन पैटर्न)
  • पृष्ठ 163 से 174 (समग्र डिजाइन पैटर्न)
  • पृष्ठ 315 से 324 (रणनीति डिजाइन पैटर्न)
  • पृष्ठ १० से ११६ (फैक्टरी विधि डिजाइन पैटर्न)
  • पृष्ठ 175 से 185 (डेकोरेटर डिज़ाइन पैटर्न)

एरिक गामा, रिचर्ड हेल्म, राल्फ जॉनसन, और जॉन व्लिसाइड्स। डिजाइन पैटर्न: पुन: प्रयोज्य वस्तु-उन्मुख सॉफ्टवेयर के तत्व । एडिसन-वेस्ले, पढ़ना, एमए, 1994।


1
धन्यवाद, अन्य सभी उत्तर गलत हैं। यह बिल्कुल नहीं है "एक दृष्टिकोण के आधार पर" और दर्जनों या सैकड़ों वोट होने से कुछ गलत नहीं होगा। एमवीसी खुद एक डिज़ाइन पैटर्न नहीं है, यह 3 परतों में अपने कोड को आर्किटेक्चर करने के लिए एक तरीका है, जिसमें डिज़ाइन किए गए डिजाइनों का उपयोग किया जाता है। दृश्य के पीछे एमवीसी को लागू करने वाले सभी ढांचे का अवलोकन, रणनीति और समग्र पैटर्न की अवधारणा का उपयोग किया जाता है। एमवीसी को समझने का सबसे अच्छा तरीका है कि आप अपना खुद का कार्यान्वयन बनाएं और फिर आप डिजाइन पैटर्न को पीछे समझेंगे।
अमरदेव २

2

MVC हमेशा सॉफ़्टवेयर आर्किटेक्चर पुस्तकों में प्रस्तुति परत के रूप में उल्लेखित और प्रस्तुत किया जाता है।

ये किताबें पढ़ें:

  1. एंटरप्राइज़ (Microsoft प्रेस) के लिए Microsoft.NET समाधान आर्किटेक्चर

  2. पेशेवर ASP.NET डिजाइन पैटर्न (Wrox)

  3. Enterpise समाधान पैटर्न Microsoft.NET (Microsoft प्रेस) का उपयोग

  4. एंटरप्राइज एप्लिकेशन आर्किटेक्चर के पैटर्न (एडिसन वेस्ले)

  5. एंटरप्राइज आर्किटेक्चर के लिए प्रैक्टिकल गाइड (अप्रेंटिस हॉल)


6
2 जवाब क्यों? आप इस उत्तर को अपने पहले एक अतिरिक्त नोट के रूप में जोड़ सकते हैं
मेंढ़क

2

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

जोश स्मिथ


1

और मार्टिन फाउलर के अनुसार वे GUI आर्किटेक्चर हैं: Martin Fowler-GUI आर्किटेक्चर

यह आवेदन के आकार पर निर्भर करता है, क्योंकि यह केवल जीयूआई से संबंधित कक्षाओं को प्रभावित करता है, एक छोटे से (ज्यादातर जीयूआई) में इसे एक वास्तुशिल्प पैटर्न माना जा सकता है जबकि एक विशाल में यह सिर्फ एक डिजाइन पैटर्न होगा जिसे आप जीयूआई पर लागू करते हैं। कोड (एप्लिकेशन कोड का 10% हो सकता है)।


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