मिश्रण कोणीय और ASP.NET MVC / वेब एपीआई?


87

मैं ASP.NET MVC / वेब एपीआई का उपयोग करके आता हूं और अब मैं कोणीय का उपयोग करना शुरू कर रहा हूं, लेकिन मैं उन्हें मिश्रण करने के उचित तरीके पर स्पष्ट नहीं हूं।

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

कोई भी सुझाव जो आपके पास ASP.NET MVC पुरुष को कोणीय के लिए संक्रमण के लिए उपयोगी होगा


4
यह निर्भर करेगा, लेकिन मुझे लगता है कि "क्या मुझे वेब एपीआई का उपयोग करने के लिए कोणीय HTTP कॉल के लिए डेटा प्राप्त करने के लिए कड़ाई से उपयोग करना चाहिए" यह करने का सही तरीका है।
माइकस्मिथडेव

यहाँ एक ASP.NET कोर वेब एपीआई बैकएंड के साथ एक कोणीय ऐप बनाने के लिए एक ट्यूटोरियल है -> medium.com/@levifuller/…
लेवी फुलर

जवाबों:


113

शुद्ध वेब एपीआई

मैं ASP.NET MVC के साथ बहुत कट्टर हुआ करता था, लेकिन जब से मैं कोणीय से मिला हूं, मुझे एक कारण नहीं दिखाई देता है कि मैं किसी भी सर्वर साइड पीढ़ी के ढांचे का उपयोग क्यों करूंगा । शुद्ध कोणीय / आरईएसटी (वेबएपीआई) एक समृद्ध और चिकनी परिणाम देता है। यह बहुत तेज़ है और आपको ऐसी वेबसाइटें बनाने की अनुमति देता है जो डेस्कटॉप एप्लिकेशन के काफी करीब आती हैं, बिना किसी फंकी हैक्स के।

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

उदाहरण के लिए किसी भी पारंपरिक सर्वर साइड फ्रेमवर्क के साथ एक विज़ार्ड फॉर्म की कल्पना करें। प्रत्येक पृष्ठ को अलग से सत्यापित और प्रस्तुत किया जाना चाहिए। हो सकता है कि पृष्ठ की सामग्री पिछले पृष्ठ के मानों पर निर्भर हो। हो सकता है कि उपयोगकर्ता ने पिछला बटन दबाया हो और पिछले फ़ॉर्म को फिर से सबमिट कर रहा हो। हम क्लाइंट की स्थिति को कहाँ संग्रहीत करते हैं? कोणीय और रीस्ट का उपयोग करते समय ये सभी जटिलताएं मौजूद नहीं हैं।

तो ... अंधेरे की ओर आओ ... हमें कुकीज़ मिल गई हैं।

इसी तरह का सवाल


मैं फिर से सहमत हूं: कोणीय के माध्यम से एप्लिकेशन विकसित करने की गति और चिकनाई। MVC या WebForms (ugh) में, आप इस समय को मार्कअप से बाहर निकालने के लिए खर्च करते हैं, और फिर उस पर पासिंग क्लाइंट कोड के एक जोड़े को करना पड़ता है, जो अजीब लगता है, श्रम गहन है, और डिस्कनेक्ट प्रकृति के कारण, बेकार है बहुत सारा समय साधारण चीजें करने में।
moribvndvs

3
@Narayana; यह कुछ एसईओ प्यार प्रदान करता है।
नल

5
क्योंकि जब मैं किसी विशेष मॉडल पर एक संपत्ति का नाम बदल देता हूं, तो मुझे "जादू के तार" के लिए AngularJS के आसपास खुदाई करने की ज़रूरत नहीं है? कोणीय अच्छा है, लेकिन .net की एक सख्त प्रकार की सुरक्षित दुनिया में, सख्त एकीकरण आपको सर्वर की ओर से प्रकार की सुरक्षा का लाभ उठाने की अनुमति देता है।
स्लीपर स्मिथ

6
@ स्लीपर स्मिथ: मैंने अपनी टीम के लोगों के साथ यह तर्क कई बार किया है, लेकिन अंतिम कोड सम्मेलनों में , यूनिट परीक्षण और चिंताओं को अलग करना दुनिया में सभी प्रकार की सुरक्षा की तुलना में बहुत अधिक प्रदान करता है । मैं भी JS को C # जैसी किसी चीज़ से बदल कर देखना पसंद करूंगा , लेकिन वास्तव में ऐसा नहीं है। यह सब मायने रखता है। आपके ग्राहक शायद आपकी कोडिंग वरीयताओं के बारे में परवाह नहीं करते हैं, वे एक शांत दिखने वाली, चिकनी प्रदर्शन करने वाली वेबसाइट चाहते हैं और वे इसे जल्दी चाहते हैं। कोणीय को वह काम मिल जाता है।
null

1
उदाहरण के लिए, नॉकआउट जेएस का उपयोग करते समय मैंने एक सामान्य ASP.NET MVC ऐप बनाया था और प्रत्येक दृश्य को MVC नियंत्रक से मॉडल डेटा प्राप्त होगा। फिर सर्वर के इस डेटा को JSON में सीरियल किया जाएगा और वहां से KnockoutJS इसे ऑब्जर्वेबल डेटा में बदल देगा, इसलिए मुझे टू-वे डेटा बाइंडिंग मिलेगी। और यह बहुत अच्छा था! लेकिन अब हम ऐसा क्या करते हैं, क्योंकि AngularJS की खुद की रूटिंग प्रणाली है? MVC रूटिंग के साथ क्या होता है? क्या हम इसका इस्तेमाल करते हैं? "_Layout" दृश्य और @RenderBody () के साथ अब क्या होता है?
एलेक्सरुला

43

AngularJS सिंगल पेज एप्लिकेशन प्रतिमान के साथ अधिक जुड़ा हुआ है, और इस तरह, सर्वर-साइड प्रौद्योगिकियों से बहुत लाभ नहीं होता है जो बैकअप प्रदान करते हैं। ऐसा कोई तकनीकी कारण नहीं है जो आपको एक साथ उपयोग करने के लिए प्रेरित करता है, लेकिन एक व्यावहारिक अर्थ में, आप क्यों करेंगे?

एक एसपीए इसकी ज़रूरत की परिसंपत्तियों (जेएस, सीएसएस, और एचटीएमएल विचारों) को पुनः प्राप्त करता है और डेटा को भेजने या पुनः प्राप्त करने के लिए सेवाओं पर वापस संचार करता है। इसलिए, सर्वर-साइड तकनीक अभी भी उन सेवाओं (साथ ही प्रमाणीकरण और पसंद जैसे अन्य साधनों) को प्रदान करने के लिए आवश्यक है, लेकिन रेंडरिंग पार्ट्स काफी हद तक अप्रासंगिक हैं और विशेष रूप से उपयोगी नहीं हैं क्योंकि यह प्रयासों का दोहराव है, केवल एमवीसी को छोड़कर सर्वर की तरफ और कोणीय क्लाइंट पर करता है। यदि आप कोणीय का उपयोग कर रहे हैं, तो आप इसे सर्वोत्तम परिणामों के लिए क्लाइंट पर चाहते हैं। आप Angular पोस्ट HTML फॉर्म बना सकते हैं और MVC क्रियाओं से आंशिक विचार प्राप्त कर सकते हैं, लेकिन आप कोणीय की सबसे अच्छी और आसान विशेषताओं को याद कर रहे हैं और अपने जीवन को कठिन बना रहे हैं।

एमवीसी काफी लचीला है और आप इसे एसपीए एप्लिकेशन से सेवा कॉल के लिए उपयोग कर सकते हैं। हालाँकि, WebAPI अधिक बारीक है और ऐसी सेवाओं के लिए उपयोग करना थोड़ा आसान है।

मैंने कई AngularJS एप्लिकेशन लिखे हैं, जिसमें पहले से मौजूद WebForms और MVC एप्लिकेशन से माइग्रेट किया गया है, और ASP.NET पहलू वास्तविक क्लाइंट के रूप में AngularJS ऐप को डिलीवर करने और एप्लिकेशन लेयर की मेजबानी के लिए एक प्लेटफ़ॉर्म की ओर विकसित होता है। ग्राहक REST (WebAPI का उपयोग करके) के माध्यम से संचार करता है। एमवीसी एक अच्छा ढांचा है, लेकिन यह आमतौर पर इन प्रकार के अनुप्रयोगों में खुद को नौकरी के बिना पाता है।

ASP.NET अनुप्रयोग बुनियादी ढांचे के लिए एक और परत बन जाता है, जहाँ इसकी जिम्मेदारियाँ सीमित हैं:

  • निर्भरता कंटेनर की मेजबानी करें।
  • कंटेनर में व्यापार तर्क कार्यान्वयन तार।
  • जेएस और सीएसएस के लिए परिसंपत्ति बंडल तैयार करें।
  • WebAPI सेवाओं की मेजबानी करें।
  • सुरक्षा लागू करें, लॉगिंग और डायग्नोस्टिक्स करें।
  • प्रदर्शन के लिए आवेदन कैश के साथ इंटरफेस।

एसपीए के बारे में एक और बढ़िया बात यह है कि यह आपकी टीम की बैंडविड्थ बढ़ा सकता है। एक समूह सेवाओं में विस्फोट कर सकता है जबकि दूसरा ग्राहक ऐप में रहता है। चूँकि आप आसानी से REST सेवाओं को स्टब या मॉक कर सकते हैं, आपके पास नकली सेवाओं पर पूरी तरह से काम करने वाला क्लाइंट ऐप हो सकता है और जब वे काम करते हैं तो वास्तविक लोगों के लिए स्वैप कर सकते हैं।

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


ठीक है, इसलिए मैं कोणीय के साथ जाना चाहता हूं और एपीआई, एंटिटी फ्रेमवर्क, सुरक्षा, आदि के साथ अपनी उत्पादकता बनाए रखने के लिए एक .NET बैक-एंड है। क्या मेरे पृष्ठों को अभी भी सर्वर-साइड मास्टर-चाइल्ड कॉन्फ़िगरेशन / लेआउट की आवश्यकता है? मैं उसके लिए क्या उपयोग करता हूं - WebForms (नहीं - तो मैं देख सकता हूं), MVC, ASP.NET वेब पेज, या कुछ और?
शॉन

1
तकनीकी तौर पर, आपको किसी भी सर्वर पेज, लेआउट पेज आदि की आवश्यकता नहीं है। बस सीधे HTML करेगा। हालाँकि, आपके अनुप्रयोग के आकार और जटिलता के आधार पर, आप कार्यक्षमता द्वारा कई अलग-अलग अनुप्रयोगों में अपने कोणीय ऐप को तोड़ना चाहते हैं (और आप एक सामान्य नेवी या जो भी उपयोग कर एक ऐप से दूसरे ऐप को लिंक कर सकते हैं)। उस स्थिति में, आप DRY और सुसंगत चीजों को रखने के लिए एक लेआउट पृष्ठ का उपयोग कर सकते हैं। इसके अलावा, आप शायद CSS या स्क्रिप्ट के लिए एसेट बंडलों का उपयोग कर रहे हैं, और रूट पेज हैं जो रेजर हैं या जो कुछ भी उन चीजों को एक साथ लाएगा।
moribvndvs

1
मैं कम से कम 8 बड़ी परियोजनाओं पर ASP.NET MVC का अब तीन वर्षों से उपयोग कर रहा हूं और मुझे इस ठीक, परिपक्व सर्वर-साइड ढांचे की आदत है। हालाँकि मुझे एसपीए का महत्व पता है और मैं कोणीय को पसंद करता हूं, इसलिए मैंने अब मिनी एसपीए या हाइब्रिड ऐप ... या "एसपीए साइलो" के लिए जाने का फैसला किया क्योंकि मिगुएल कास्त्रो ने उन्हें बुलाया। मेरा सवाल है - प्राधिकरण और प्रमाणीकरण के बारे में क्या? मुझे पता है कि ASP.NET MVC इस कार्य को सरलता से करता है। यह बिना ASP.NET MVC के कैसे किया जाता है?
एलेक्सरुला

1
@AlexRebula मुझे लगता है कि यह सवाल अधिक सवाल है कि आप WebApi बनाम MVC में प्रमाणीकरण कैसे करना चाहते हैं। आम तौर पर यह कुकीज़ के साथ होता है (आप WebApi के साथ FormsAuth या ASP.NET पहचान कुकीज़ का उपयोग भी कर सकते हैं) या हेडर (OAuth, आदि)। या तो दृष्टिकोण पूरी तरह से वेब एपीआई और कोणीय दोनों द्वारा समर्थित है, लेकिन आपको कार्यान्वयन पर एक विकल्प बनाने की आवश्यकता है। आप क्या कर रहे हैं और आपके विशिष्ट लक्ष्य क्या हैं, इस बारे में अधिक जानकारी के बिना आपको अधिक सटीक उत्तर देना कठिन है।
moribvndvs

@HackedByChinese मुझे समझ में आया। और अब मुझे लगता है कि यह वास्तव में बहुत अच्छा होगा यदि मेरे पास वेब एपीआई में खुदाई करने के लिए अधिक समय था ...
एलेक्सरुला

6

यह उस परियोजना पर निर्भर करता है जिस पर आप काम कर रहे हैं।

अगर angularJS आपके लिए कुछ नया है, तो मैं शुरू करने के लिए एक छोटा कम जोखिम / दबाव परियोजना चुनूंगा और यह सुनिश्चित करना होगा कि आप चीजों को सही तरीके से करना सीखें (मैंने दबाव, समय सीमा की वजह से Angularjs का उपयोग करते हुए कई परियोजनाओं को गलत देखा है ... इसे एक उचित तरीके से सीखने के लिए समय की कमी, जैसे कि JQuery का उपयोग करना या नियंत्रकों के अंदर DOM का आरोप लगाना, आदि ...)।

यदि प्रोजेक्ट एक ग्रीन फील्ड वन है, और आपको AngularJS पर कुछ अनुभव मिला है, तो ASP.net MVC को छोड़ देना और सर्वर साइड में शुद्ध REST / WebAPI के लिए जाना समझ में आता है।

यदि यह एक मौजूदा परियोजना है, तो आप कार्यक्षमता का एक जटिल सबसेट ले सकते हैं और एक अलग कोणीयजेएस ऐप के रूप में उस पृष्ठ का निर्माण कर सकते हैं (जैसे आपका ऐप मानक सरल / मध्यम जटिलता रेजर आधारित पृष्ठों के एक बड़े समूह से बना है लेकिन आपको जरूरत है और उन्नत संपादक / पृष्ठ, जो कि AngularJS के साथ बनाने के लिए लक्ष्य टुकड़ा हो सकता है)।


1
मुझे आपका उत्तर पसंद है और आपने जो कहा उसमें सबसे अधिक सहमत हैं। हालाँकि एक बात है जो मुझे परेशान करती है। ASP.NET MVC एक बहुत ही अच्छा और परिपक्व सर्वर-साइड वेब फ्रेमवर्क है जिसमें महान बिल्ट-इन फीचर जैसे प्रमाणीकरण और प्राधिकरण हैं। आपने लिखा कि शुद्ध REST / WebAPI में जाने के लिए ASP.NET MVC को छोड़ सकता है। अब मुझे आश्चर्य है कि क्या ASP.NET MVC के रूप में प्रमाणीकरण और प्रमाणीकरण को पूरा करना आसान है? यह उल्लेख करना आसान नहीं है कि Google आदि के लिए OAuth को लागू करना कितना आसान है .. इसलिए मेरा प्रश्न यह है कि उन सभी ठगों को REST / WebAPI के साथ पूरा करना कितना आसान है। इसलिए मैं एक मिनी एसपीए पर विचार करूंगा।
एलेक्सरुला

हमारे मामले में हम हर HTTP अनुरोध (इसे जोड़ने के लिए http डिफ़ॉल्ट एकल स्थान) में एक टोकन सेटअप करते हैं। एएसपी .net MVC / web api का उपयोग करें। टोकन और अनुमतियों की जांच करने के लिए अधिकृत करें, आप वेब एपीआई विधि के भीतर भी टोकन प्राप्त कर सकते हैं और प्रदर्शन कर सकते हैं। अधिक ठीक देखते सुरक्षा जाँच। यदि आपको OAuth की आवश्यकता है तो आपकी सहायता के लिए पुस्तकालयों के साथ-साथ कोणीय तरफ भी हैं।
ब्रालियो

0

विचारों के निर्माण के लिए आप फ्रंट एंड डेवलपमेंट के लिए कोणीय ढांचे का उपयोग कर सकते हैं। यह आपको एक मजबूत आर्किटेक्चर प्रदान करता है और एक बार जब आप सीख लेते हैं तो आपको यह मिलेगा कि यह Asp.net MVC के रेजर व्यू इंजन पर फायदे हैं। डेटा प्राप्त करने के लिए आपको WebAPI और अब ASP.Net MVC प्रोजेक्ट का उपयोग करना होगा जो WebAPI और MVC दोनों नियंत्रकों को बॉक्स से बाहर करता है। आप नीचे दिए गए लिंक को कोणीय और ASP.Net MVC अनुप्रयोग विकास के साथ शुरू कर सकते हैं।

http://hive.rinoy.in/angular4-and-asp-net-mvc-hybrid-application/

कोणीय अनुप्रयोगों के लिए यूआई घटकों को विकसित करने के लिए वर्तमान में दो ढांचे उपलब्ध हैं। मैंने इन दोनों रूपरेखाओं का उपयोग एक कोणीय परियोजनाओं में किया है जो मैंने काम किया था।

सामग्री https://material.angular.io/

PrimeNG https://www.primefaces.org/primeng/#/

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