क्या मुझे AngularJS और ASP.NET MVC दोनों का उपयोग करना चाहिए?


58

मैंने AngularJS और ASP.NET MVC सीखना शुरू किया, लेकिन मुझे यकीन नहीं है कि उन दोनों को एक ही परियोजना में एक साथ उपयोग क्यों किया जाए?

क्या वे दोनों MVC फ्रेमवर्क नहीं हैं? क्या मुझे उन दोनों को एक ही एप्लिकेशन में उपयोग करना चाहिए? यह एक या दूसरे नहीं है?

जवाबों:


74

यदि आप सिंगल पेज एप्लिकेशन (एसपीए) का निर्माण कर रहे हैं , तो संभवतः आपको 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" है। नर्क, भले ही वह एमवीसी हो, मिक्स और मैच वांछित।


3
अद्भुत प्रतिक्रिया। आपके स्पष्टीकरण के लिए बहुत बहुत धन्यवाद +1
नेटली 12

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

1
@ नेटली यदि डेटा वेब एपीआई से है, तो आप इसे क्लाइंट-साइड लाने की संभावना रखते हैं। इसका मतलब है कि आप कोणीय MVC में बाध्यकारी हैं, न कि .NET MVC में। आप स्पष्ट रूप से लूप नहीं करते हैं। आप ngRepeat का उपयोग करके डेटा को अपने ग्रिड / टेबल से बांध देते हैं । डेटा लाने के लिए, आप संभवतः $ http मॉड्यूल का उपयोग करेंगे और अपने वेब API समापन बिंदु को कॉल करेंगे। निर्णय लेने के लिए कि किस दृष्टिकोण का उपयोग करना है, वह विचित्र है। कोई काला और सफेद जवाब नहीं है। आपको अपनी प्रवृत्ति का प्रयोग करना, मूल्यांकन करना और उसका पालन करना है।
Scant Roger

... सावधानी का एक शब्द। यदि आपने पहले कभी भी कोणीय या अन्य पूर्ण-सेवा जावास्क्रिप्ट ढांचे का उपयोग नहीं किया है, तो आपको रस्सियों को सीखने में कुछ कठिन घंटे खर्च करने होंगे। वे जरूरी सीधे नहीं हैं। मैं आपको आश्वस्त कर सकता हूं, हालांकि, वे लंबे समय में आपके जीवन को आसान बनाते हैं। कड़ी मेहनत। इसके साथ बने रहें। आप बहुत अच्छा करेंगे।
२०:५५

1
@ScantRoger मैं माफी मांगता हूं, लेकिन आपके जवाब ने मेरे लिए चीजों को स्पष्ट नहीं किया। यदि मैं एमवीसी सर्वर-साइड फ्रेमवर्क का उपयोग कर रहा हूं, जहां व्यू अज्ञेयवादी है, तो मैं इसके साथ कोणीय कैसे बांध सकता हूं? सर्वर (वेब ​​एपीआई) में पहले से ही मॉडल और नियंत्रक परिभाषाएं हैं। इसलिए, अगर मैं कोणीय का उपयोग करता हूं, तो मुझे फिर से एमवीसी लगाया जा रहा है। तो क्या यह MCVCM होने के नाते समाप्त होता है ...? (मॉडल और नियंत्रक दोनों क्लाइंट साइड और सर्वर साइड पर परिभाषा) या यह कारण है कि मैं क्लाइंट-साइड MVC फ्रेमवर्क का उपयोग नहीं करना चाहिए, जैसे कि कोणीय, अगर मैं पहले से ही अपने वेब एपीआई के लिए MVC फ्रेमवर्क का उपयोग कर रहा हूं
अब्दुल

17

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।


1
धन्यवाद मेनमा। मुझे पता है कि AngularJS क्लाइंट साइड है, और MVC सर्वर साइड है। मुझे यह भी पता है कि अन्य पुस्तकालयों जैसे कि हैंडलबार, नॉकआउट को MVC.NET में उपयोग किया जा सकता है, और Angular का उपयोग php, java अनुप्रयोगों में किया जा सकता है। जो मैं पूछ रहा हूं कि दोनों को एक साथ उपयोग करने के लिए क्यों है, क्योंकि दोनों एक ही काम करते हैं जो "एमवीसी" है, लेकिन एक क्लाइंट साइड है और एक सर्वर साइड है। क्लाइंट साइड और सर्वर साइड में MVC फ्रेमवर्क को क्यों मिलाया जाता है? क्या हम एक ऐसा आवेदन नहीं कर सकते जो केवल कोणीय अनुप्रयोग है? या एक आवेदन जो केवल MVC.net अनुप्रयोग है?
नताली

@ नटाली: मैं देख रहा हूं। मैंने उस बारे में अधिक जानकारी प्रदान करने के लिए उत्तर संपादित किया। एक छोटी प्रतिक्रिया यह है कि आप उन दो रूपरेखाओं को परियोजनाओं में मिलाते हैं जहाँ यह सर्वर और क्लाइंट दोनों पक्षों पर एक विशिष्ट संरचना रखने के लिए समझ में आता है।
आर्सेनी मूरज़ेंको

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

मेरे मन में वही सवाल हैं। मुझे asp.net MVC का उपयोग करने का कोई कारण नहीं मिला। मेरा मतलब है कि यह सर्वर साइड पर Asp.net Web API जैसा दिखता है और क्लाइंट साइड पर Angular पर्याप्त होगा। लेकिन मैंने पहले सोचा; वेब API = डेटा एक्सेस लेयर, Asp.Net MVC = बिजनेस लॉजिक लेयर, कोणीय = UI लेयर। लेकिन Angular ओर से हम केवल Web API कॉल कर सकते हैं इसलिए हम Asp.Net MVC सर्वर साइड का उपयोग नहीं कर सकते हैं। मुझे लगता है कि हमें एक अच्छे उदाहरण की आवश्यकता है कि हमें Asp.Net MVC का उपयोग करने की आवश्यकता क्यों हो सकती है।
सलीम

9

यदि आप दृश्य स्टूडियो का उपयोग कर रहे हैं तो एक नया 'सिंगल पेज ऐप' एमवीसी वेबसाइट टेम्पलेट है जिसमें कोणीय और एमवीसी वेब एपि नियंत्रक शामिल हैं।

यह अच्छी तरह से काम करता है क्योंकि आपका MVC सर्वर-साइड कोड कॉल करने के लिए कोणीय क्लाइंट साइड कोड के लिए json एंडपॉइंट प्रदान करता है।

इसके अतिरिक्त आप अपने सिंगल पेज ऐप के लिए मूल HTML दृश्य या विचारों की सेवा के लिए MVC नियंत्रकों का उपयोग कर सकते हैं। यह आपको सर्वर साइड जनरेशन, ऑथराइजेशन, रीडायरेक्ट, एरर हैंडलिंग आदि की शक्ति देता है

अक्सर आप एक ही पेज ऐप पर भी थोड़ी मात्रा में जेनरेट किए गए html / javascript को अलग-अलग वातावरण, अलग-अलग भाषाओं के लिए एंडपॉइंट यूआरएल, या यहां तक ​​कि ऑड ऑथेंटिकेशन पेज के लिए चाहते हैं जो सर्वर साइड से करना आसान हो।


1
वीएस 2015 सीई में मानक एसपीए टेम्पलेट बनाते समय, मैं स्क्रिप्ट फ़ोल्डर में बूटस्ट्रैप, jquery, नॉकआउट, प्रतिसाद और सैमी देखता हूं, लेकिन कोई कोणीय नहीं। क्या मैं कुछ भूल रहा हूँ?
TK-421

2

3 साल बाद, अपने ऐप को क्लाइंट साइड में बनाने के लिए अपने डेटा और कोणीय (जेएस या नए) की सेवा के लिए ASP.NET वेब एपीआई का उपयोग करें। यदि आप एक स्थैतिक साइट बना रहे हैं तो बस ASP.NET MVC का उपयोग करें।

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