जवाबों:
यदि आप सिंगल पेज एप्लिकेशन (एसपीए) का निर्माण कर रहे हैं , तो संभवतः आपको ASP.NET MVC में "MVC" की आवश्यकता नहीं है । दृश्य, विशेष रूप से गतिशील विचार, संभावित रूप से क्लाइंट-साइड वितरित / हेरफेर किए जाते हैं। कोणीय संभालता है कि बस ठीक है।
लेकिन शायद आप 100% एसपीए नहीं चाहते हैं। फिर क्या? 10 पृष्ठों के बजाय कल्पना करें, लेकिन 10 पृष्ठ जो बहुत हैंगतिशील। उपयोगकर्ता लॉग ऑन करने के बाद, दाएं हाथ के कोने में एक छोटा उपयोगकर्ता बैज है। यह गतिशील नहीं है। यह उपयोगकर्ता की "स्कोर" और उनकी नवीनतम सेल्फी जैसी कुछ निफ्टी चीजों को दिखाता है। आप निफ्टी चीजों को कैश करते हैं ताकि उन्हें आसानी से प्राप्त किया जा सके। अब, आप इसके साथ दो तरीके से जा सकते हैं। यदि आप क्लाइंट-साइड MVC प्यूरिस्ट हैं, तो आप अन्य HTML डेटा की तरह, प्रारंभिक HTML पेलोड वितरित होने के बाद बिल्ला डेटा प्राप्त करते हैं। लेकिन शायद आप शुद्धतावादी नहीं हैं। हो सकता है कि आप एक शुद्धतावादी के विपरीत हों। हो सकता है कि आप एक असुर हैं। इसलिए, आरंभिक HTML देने के बजाय, कुछ ऐसे जावास्क्रिप्ट को वितरित करना जो आपके सर्वर पर वापस पोस्ट करेंगे, बैज डेटा को हथियाने के लिए जावास्क्रिप्ट के माध्यम से पोस्ट करें, और फिर अंततः उस डेटा को क्लाइंट-साइड MVC के माध्यम से एक दृश्य में मर्ज करें,कि अपने प्रारंभिक HTML के रूप में। आपका प्रारंभिक HTML डिलीवर होने के बाद, आप अपने विशिष्ट क्लाइंट-साइड MVC एंटिक्स के साथ आगे बढ़ते हैं।
तो ... सर्वर पर और क्लाइंट पर MVC कोड को व्यवस्थित करने का एक सुविधाजनक तरीका है जो 2001 में गड़बड़ हुआ करता था। आपको एक या दूसरे को चुनने की आवश्यकता नहीं है। आप दोनों चुन सकते हैं। दी गई, आप प्रारंभिक HTML डिलीवर करने के बाद जितना अधिक करेंगे, आपको सर्वर-साइड MVC की उतनी ही आवश्यकता होगी। फिर भी, यह आपके लिए है अगर आपको इसकी आवश्यकता है। उदाहरण के लिए, मैंने ASP.NET MVC / कोणीय अनुप्रयोग पर काम किया, जहाँ बाह्य कोणीय टेम्पलेट वास्तव में .NET MVC ActionResult हो सकते हैं। इसका अर्थ है कि आपका सर्वर नियंत्रक डेटा को अपने दृश्य में मर्ज कर सकता है, इसे टेम्प्लेट के रूप में कोणीय में वितरित कर सकता है, और एंगुलर का नियंत्रक तब इसके डेटा को दृश्य में मर्ज कर सकता है। मैं यह नहीं कह रहा हूं कि यह एक अच्छा विचार है, लेकिन यह सिर्फ दिखाता है कि एमवीसी का एक रूप दूसरे को अप्रचलित नहीं करता है।
इसके अलावा, कोई फर्क नहीं पड़ता कि आप कोणीय को कैसे तैनात करते हैं, आपको उस प्रारंभिक HTML, टेम्प्लेट, और सबसे महत्वपूर्ण रूप से डेटा को वितरित करने के तरीके की आवश्यकता होगी। क्यों नहीं एक मंच का उपयोग करें जो इसे आसान बनाता है? कई हैं, लेकिन .NET MVC कोई स्लैश नहीं है। जैसा कि मैंने कहा, आप प्रारंभिक HTML और बाहरी कोणीय टेम्पलेट MVC कार्रवाई का परिणाम बना सकते हैं, लेकिन बेहतर अभी तक, आप डेटा वितरित करने के लिए .NET वेब API का उपयोग कर सकते हैं । वेब एपीआई खुबानी के रूप में स्वादिष्ट है।
सारांशित: MVC सिर्फ एक पैटर्न है। आप किसी भी भौतिक स्तर पर उस पैटर्न का उपयोग करना चाह सकते हैं। इसका उपयोग नहीं किया जा सकता है। अगर यह समझ में आता है, तो इसे स्वतंत्र रूप से उपयोग करें। इसके अलावा, कोणीय वैसे भी MVC नहीं हो सकता (इसलिए कहते हैं कि जो लोग इन चीजों की परवाह करते हैं), इसलिए इसे एक ऐसे उपकरण के साथ उपयोग करने के लिए स्वतंत्र महसूस करें जिसका नाम में "MVC" है। नर्क, भले ही वह एमवीसी हो, मिक्स और मैच वांछित।
ASP.NET MVC एक सर्वर-साइड फ्रेमवर्क है; यह परवाह नहीं करता है कि जावास्क्रिप्ट पुस्तकालयों का आप क्या उपयोग करते हैं। AngularJS एक क्लाइंट-साइड लाइब्रेरी है, जो इस बात की परवाह नहीं करती है कि सर्वर-साइड टेक्नोलॉजी किस वेबसाइट को पावर देती है- यह Python, ASP.NET MVC या सीधे डिस्क पर संग्रहित स्टैटिक HTML फाइलों का सादा पुराना गुच्छा भी हो सकता है।
ASP.NET MVC और AngularJS दोनों संगत हैं, और वहाँ बहुत सारी परियोजनाएँ हैं जो उन्हें एक साथ उपयोग करती हैं।
क्या आपको दोनों का उपयोग करने की आवश्यकता है? ज़रुरी नहीं। यह पूरी तरह से आपकी परियोजना की जरूरतों पर निर्भर करता है।
यदि आपकी वेबसाइट गतिशील है, तो आपको कुछ सर्वर-साइड स्क्रिप्टिंग का उपयोग करना होगा। आप ASP.NET का उपयोग कर सकते हैं, और यह तथ्य कि आप AngularJS का उपयोग कर रहे हैं, आपके सर्वर-साइड कोड को अधिक MVC नहीं बनाएगा। यदि आप अपने सर्वर-साइड एप्लिकेशन को MVC के रूप में बनाना चाहते हैं, तो आप ASP.NET MVC को चुनेंगे।
इसी तरह, आप ASP.NET MVC का उपयोग करने वाले तथ्य को अपने क्लाइंट-साइड कोड की संरचना के बारे में कुछ भी नहीं बताते हैं। आप संरचना के बारे में किसी भी विचार के बिना अपने सभी जावास्क्रिप्ट को एक एकल फ़ाइल में रख सकते हैं और उस के साथ खुश हो सकते हैं (जब तक कि परियोजना बढ़ने नहीं लगती)। यहाँ फिर से, AngularJS क्लाइंट-साइड पर आपके एप्लिकेशन को स्ट्रक्चर करने के तरीके के रूप में प्रस्तुत करता है।
साइड नोट: आपने अपना प्रश्न ASP.NET MVC को टैग किया है। जब तक कि यह विरासत परियोजना है जिसे आपको बनाए रखना है या आपके पास विशिष्ट बाधाएं हैं जब आप विरासत सर्वर पर एप्लिकेशन की मेजबानी कर रहे हैं जो पिछले चार वर्षों से अपडेट नहीं थे, तो आप एएसपी का उपयोग कर सकते हैं। इसके बजाय .NET MVC 4 या 5।
यदि आप दृश्य स्टूडियो का उपयोग कर रहे हैं तो एक नया 'सिंगल पेज ऐप' एमवीसी वेबसाइट टेम्पलेट है जिसमें कोणीय और एमवीसी वेब एपि नियंत्रक शामिल हैं।
यह अच्छी तरह से काम करता है क्योंकि आपका MVC सर्वर-साइड कोड कॉल करने के लिए कोणीय क्लाइंट साइड कोड के लिए json एंडपॉइंट प्रदान करता है।
इसके अतिरिक्त आप अपने सिंगल पेज ऐप के लिए मूल HTML दृश्य या विचारों की सेवा के लिए MVC नियंत्रकों का उपयोग कर सकते हैं। यह आपको सर्वर साइड जनरेशन, ऑथराइजेशन, रीडायरेक्ट, एरर हैंडलिंग आदि की शक्ति देता है
अक्सर आप एक ही पेज ऐप पर भी थोड़ी मात्रा में जेनरेट किए गए html / javascript को अलग-अलग वातावरण, अलग-अलग भाषाओं के लिए एंडपॉइंट यूआरएल, या यहां तक कि ऑड ऑथेंटिकेशन पेज के लिए चाहते हैं जो सर्वर साइड से करना आसान हो।
3 साल बाद, अपने ऐप को क्लाइंट साइड में बनाने के लिए अपने डेटा और कोणीय (जेएस या नए) की सेवा के लिए ASP.NET वेब एपीआई का उपयोग करें। यदि आप एक स्थैतिक साइट बना रहे हैं तो बस ASP.NET MVC का उपयोग करें।