मेरी राय में दो प्रकार के MVC हैं - शुद्ध और अशुद्ध (एक बेहतर शब्द की कमी के लिए :)
शुद्ध MVC छोटी बात में पेश किया गया था:
यह व्यक्तिगत कंप्यूटिंग / डेस्कटॉप अनुप्रयोगों के लिए अभिप्रेत था। जैसा कि आप देख सकते हैं, मॉडल किसी भी अपडेट / उसमें किए गए परिवर्तनों के विचारों को सूचित करता है। ऐसा नहीं है (अशुद्ध) MVC के साथ।
अन्य (अशुद्ध) एमवीसी जो वेब अनुप्रयोगों के लिए टाल दिया गया है, ऊपर के क्लासिक एमवीसी के बजाय पीएसी ( प्रस्तुति-गर्भपात-नियंत्रण ) पैटर्न का अधिक है। यह कोड संगठन और चिंताओं को अलग करने का अधिक है:
- मॉडल : संग्रहीत डेटा के लिए अमूर्त
- नियंत्रण : आमतौर पर जिसे व्यावसायिक तर्क परत के रूप में जाना जाता है और साथ ही संबंधित व्यावसायिक तर्क (उर्फ नियंत्रक) के लिए HTTP अनुरोधों को रूट करने के लिए ज़िम्मेदार है।
- दृश्य : अधिकतर वे टेम्पलेट देखें जो मॉडल से डेटा को प्रारूपित करते हैं और इसे क्लाइंट को वापस करते हैं। मॉडल कभी भी दृश्य को अपडेट भेजता है और न ही किसी मॉडल से अपडेट के लिए 'सदस्यता' देखता है। यह दुःस्वप्न युग्मन होगा। इसलिए यह सच एमवीसी की तुलना में पीएसी की तरह अधिक है।
अब, यहां बताया गया है कि आमतौर पर एक वेब एप्लिकेशन कैसे संरचित होता है:
- फ्रंट-एंड : बैकऑन.जेएस आदि के रूप में फ्रेमवर्क का उपयोग करते हुए क्लाइंट पर एमवीसी, यह सार में 'सही' एमवीसी फॉर्म है।
- बैक-एंड : फिर से, आपके पास (अशुद्ध) कोड संगठन और चिंताओं को अलग करने के लिए MVC / PAC है
- ग्लोबल वेब ऐप (संपूर्ण रूप में वेब एप्लिकेशन के लिए): यदि आपके पास RESTful बैकएंड है जो केवल JSON डेटा लौटाता है, तो आपके पूरे बैकएंड को फ्रंट-एंड क्लाइंट एप्लिकेशन के लिए एक मॉडल के रूप में माना जा सकता है जहां व्यू और कंट्रोलर सार में रहते हैं।
तो एमवीसी के कुछ नुकसान क्या हैं ? ठीक है, पैटर्न समय की कसौटी पर खरा उतरा है, इसलिए इसमें बहुत से ऐसे मामले नहीं हैं, जो इसके अलावा कुछ 'जटिल' हो। आप देखते हैं, एमवीसी एक मिश्रित पैटर्न है - रणनीति / पर्यवेक्षक पैटर्न को लागू करता है और सभी उच्च स्तरीय पैटर्न बनाने के लिए अच्छी तरह से व्यवस्थित होते हैं।
क्या आपको हर जगह इसका इस्तेमाल करना चाहिए? शायद नहीं। बहुत जटिल वेब अनुप्रयोग शायद कई परतों में विभाजित हो जाते हैं! आप केवल व्यू / बिजनेस लॉजिक / डेटा लेयर्स के साथ नहीं निकल सकते। ओवररचिंग फ्रेमवर्क / संगठन अभी भी एमवीसी-ईश हो सकता है, लेकिन केवल एक मैक्रोस्कोपिक स्तर पर।
यहां एक उदाहरण है जहां केवल एमवीसी अपने आप में शायद एक बुरा विकल्प है : एक बड़े बैंक के लिए एयर ट्रैफिक कंट्रोल सिस्टम या लोन / मॉर्गेज प्रोसेसिंग एप्लिकेशन को डिजाइन करने का प्रयास करें - केवल एमवीसी अपने आप में एक बुरा विकल्प होगा। आपके पास अनिवार्य रूप से इवेंट बसें / संदेश कतारें होंगी, जो बहु परतों के साथ MVC के साथ अलग-अलग परतों के भीतर हैं और संभवतया कोड आधार को बेहतर व्यवस्थित रखने के लिए MVC / PAC डिज़ाइन को ओवररच करना होगा।