एएसपी.नेट में 3-टीयर आर्किटेक्चर और एमवीसी (मॉडल, व्यू कंट्रोलर) के बीच अंतर


9

मुझे यह जानकर अच्छा लगेगा कि एएसपी.नेट में एमवीसी (मॉडल, व्यू कंट्रोलर) से 3-स्तरीय वास्तुकला कैसे भिन्न होती है क्योंकि मुझे ऐसा लगता है कि एक ही वास्तुकला लागू होती है।

3-स्तरीय हम है User Services Layer, BusinessLayerऔर DataAccessLayerदूसरी ओर हमारे पास पर Model, View, और Controller। यह मुझे वही वास्तुकला लगती है।

क्या कोई समझा सकता है कि क्या वास्तव में दो वास्तुकला में अंतर है, प्रत्येक परत एक दूसरे से कैसे भिन्न होती है?


2
पर एक
alook

2
MVC को UI आर्किटेक्चर के रूप में अधिक देखा जा सकता है। अन्य उदाहरण उदाहरण के लिए कोणीय हैं। जब आप ASP.net MVC प्रोजेक्ट में 3 स्तरीय आर्किटेक्चर लागू करते हैं तो यह MVC में मॉडल (M) को 3 परतों में विभाजित करेगा।
devfric


@gnat मैं देख रहा हूं, मैंने उस पुराने को पहले नहीं देखा था .. लेकिन यह जैसा आपने कहा था, वैसा ही दिख रहा है, पुरानी बात पर जवाब केवल यह नहीं बताया गया है कि आपको क्या लगता है? :)
japzdivino

जवाबों:


18

यह यह पूछने जैसा है कि एक सेब और एक सेब कोर के बीच क्या अंतर है। ये दो आर्किटेक्चर एक दूसरे के लिए प्रतिस्थापन नहीं हैं। मुझे लगता है कि एक और अधिक सटीक राय यह है कि 3-स्तरीय संरचना है बढाती है MVC।

MVC आर्किटेक्चर

  • मॉडल: ये आपके आवेदन में "सामान" का प्रतिनिधित्व करते हैं। इस परत ने हाल के वर्षों में थोड़ी फजी हो गई है, जैसा कि मैं बाद में समझाऊंगा।

  • दृश्य: उपयोगकर्ता इंटरफ़ेस। उपयोगकर्ता जिस चीज के साथ इंटरैक्ट करता है।

  • नियंत्रक: प्रोग्रामिंग कोड जो उपयोगकर्ता के प्रति प्रतिक्रिया करता है और मॉडल परत में परिवर्तन करता है

3-स्तरीय वास्तुकला

3-स्तरीय वास्तुकला के साथ, आपके पास विभिन्न जिम्मेदारियों के साथ परतें हैं।

  • उपयोगकर्ता सेवाएँ: (या "सामान्य रूप से" सेवाएं) यह परत पुनर्प्राप्ति और "मॉडल" परत के संशोधनों के समन्वय के बारे में अधिक है। जटिल, बहु-चरण क्रियाएं यहां निष्पादित होती हैं

  • बिजनेस लेयर: यह प्रोग्रामिंग कोड में खोले गए व्यावसायिक नियमों का प्रतिनिधित्व करता है। क्या "व्यवसाय" चाहता है इस परत में लागू किया गया है।

  • डेटा एक्सेस लेयर: एक या अधिक कक्षाएं जो लगातार डेटा स्टोर तक पहुंचने के लिए जिम्मेदार हैं।

3-स्तरीय वास्तुकला का एकमात्र हिस्सा जो MVC के साथ प्रतिच्छेद करता है, वह है "बिजनेस लेयर"। MVC में "मॉडल" और 3-स्तरीय वास्तुकला में "बिजनेस लेयर" समान लक्ष्य को प्राप्त करने की कोशिश कर रहे हैं।

MVC में "M" ने फ़र्ज़ी हो गया है

MVC में "मॉडल" परत का विस्तार हाल के वर्षों में हुआ है। मैंने जो देखा है, उससे दो, संभवतः तीन प्रकार के मॉडल हैं:

  1. डोमेन मॉडल: ये "चीजों" का प्रतिनिधित्व करते हैं जो "बिजनेस" की परवाह करता है - बिजनेस डोमेन। ये कक्षाएं डेटा और सभी प्रक्रियाओं को रखती हैं जो व्यावसायिक नियमों को लागू करने के लिए उस डेटा पर काम करती हैं। एक डोमेन में अक्सर डोमेन मॉडल को टेबल से बांधा जाता है। यह 3-स्तरीय वास्तुकला के "बिजनेस लेयर" को फिट करने के लिए लगता है।

  2. देखें मॉडल: ये ऐसी कक्षाएं हैं जिनका उपयोग डोमेन मॉडल से डेटा को देखने के लिए और अधिक देखने योग्य बनाने के लिए किया जाता है। यह 3-स्तरीय वास्तुकला में कहीं भी फिट नहीं है क्योंकि दृश्य मॉडल व्यावसायिक तर्क को लागू नहीं करते हैं, न ही वे किसी भी प्रकार की सेवा या डेटा एक्सेस प्रदान करते हैं।

  3. बिजनेस मॉडल: जटिल अनुप्रयोगों में, बिजनेस लॉजिक से डोमेन मॉडल को डिकूप करने की आवश्यकता उत्पन्न होती है। व्यावसायिक मॉडल में डेटा और संचालन प्रक्रियाएँ होती हैं जो व्यावसायिक नियमों को लागू करने के लिए उस डेटा पर काम करती हैं, और डोमेन मॉडल को "प्रॉपर्टी बैग्स" में बदल दिया जाता है - वे वस्तुएं जो केवल डेटा रखती हैं लेकिन उनमें कोई व्यवहार नहीं होता है। डोमेन मॉडल डेटाबेस और एप्लिकेशन के बीच डेटा ट्रांसफर ऑब्जेक्ट का दूसरा रूप बन जाता है।

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

  • मॉडल
    • डोमेन मॉडल (MVC / 3-स्तरीय)
    • मॉडल देखें (MVC)
    • (वैकल्पिक रूप से) बिजनेस मॉडल (MVC / 3-स्तरीय)
  • दृश्य (MVC)
  • नियंत्रकों (MVC)
  • डेटा एक्सेस (3-स्तरीय)
  • सेवाएँ (3-स्तरीय)

कुछ चौराहे हैं, लेकिन वे काफी हद तक अलग हैं, और एक साथ एक बड़ी प्रणाली के विभिन्न घटकों को अलग करने और अलग करने के लिए उपयोग किया जाता है।


3

नहीं, वे एक समान नहीं हैं।

MVC उपयोगकर्ता इंटरफ़ेस कोड को संरचित करने के लिए एक डिज़ाइन पैटर्न है। इसका उपयोग त्रि-स्तरीय वास्तुकला में किया जा सकता है, इस मामले में उपयोगकर्ता सेवाओं की परत में पैटर्न शामिल होगा। लेकिन इसका उपयोग यूआई के लिए उन अनुप्रयोगों में भी किया जा सकता है जो त्रि-स्तरीय नहीं हैं - उदाहरण के लिए कोई कैलकुलेटर जिसमें कोई अंतर्निहित दृढ़ता नहीं है, और इसलिए कोई डेटा एक्सेस परत नहीं है।

एमवीसी फ्रंटएंड के साथ त्रि-स्तरीय आर्किटेक्चर में, मॉडल ऑब्जेक्ट के रूप में उपयोग की जाने वाली डोमेन ऑब्जेक्ट्स व्यवसाय परत से ऑब्जेक्ट होंगे, लेकिन एमवीसी पैटर्न वास्तव में निर्दिष्ट नहीं करता है कि मॉडल किस तरह का है, केवल पैटर्न में उनकी भूमिका क्या है। है। उदाहरण के लिए MVVM वेरिएंट में, मॉडल डोमेन ऑब्जेक्ट्स के शीर्ष पर UI- स्पेसिफिक एडेप्टर हैं। इस मामले में भी मॉडल उपयोगकर्ता सेवा परत में है।


सबसे पहले, MVC एक वास्तुशिल्प पैटर्न developer.mozilla.org/en-US/Apps/Fundamentals/… है । दूसरे, यह केवल UI के लिए नहीं है, यह UI में व्यापक रूप से उपयोग किया जाता है, लेकिन आपका बहुत ही निर्धारक कथन गलत और भ्रामक है।
डैनियल डुबोव्स्की

2

मुझे पता है कि अलग-अलग उत्तरों के टन होंगे, लेकिन मैं आपको इस पर अपना विचार दूंगा।

यह सॉफ्टवेयर इंजीनियरिंग में सबसे प्रसिद्ध उत्तर है "यह निर्भर करता है"।

अनिवार्य रूप से यदि आप इसे देखते हैं, तो विभिन्न कार्यान्वयन और सैद्धांतिक मतभेदों के अलावा ये समान प्रवाह के साथ बहुत समान पैटर्न हैं।

जहां यह निर्भर करता है कि आप जिस एप्लिकेशन का निर्माण कर रहे हैं वह आता है, एक साधारण वेबएप में केवल एक एमवीसी परत हो सकती है जो ओआरएम से डीबी तक बात कर रही है। एक और अधिक जटिल व्यक्ति के पास MVC हो सकता है, जो यूजर लेयर में फ्रंट-एंडिंग को संभालता है, जिसमें अधिक जटिल गैर-उपयोगकर्ता उजागर संचालन बीएल परत में हो रहा है, जिसमें डेटा लेयर कई स्रोतों से युक्त है।

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