ASP.NET कोर 2.0 रेजर बनाम कोणीय / प्रतिक्रिया / आदि


101

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

मुझे प्रोजेक्ट पर मुख्य वास्तुकार को सौंपा गया है, इसलिए मैं नवीनतम वेब फ्रेमवर्क में कुछ शोध कर रहा हूं। बैक एंड के लिए, हमने कुछ परीक्षण किए हैं और Azure SQL प्लेटफॉर्म के साथ जाने का फैसला किया है। अब तक, मैं उन सुधारों को पसंद कर रहा हूं जो कोर 2.0 के साथ ASP.NET को किए गए हैं, और किए जा रहे हैं। विशेष रूप से ASP.NET MVC के पिछले संस्करणों में रेजर इंजन।

मैं "नया" रेजर बनाम कोणीय / प्रतिक्रिया और इसी तरह के कुछ विशेषज्ञ राय प्राप्त करना चाहता था। मैं विशेष रूप से प्रदर्शन से अधिक चिंतित हूं। कोर 2.0 रेजर क्लाइंट साइड रेंडरिंग फ्रेमवर्क को कैसे पकड़ता है? क्या मतभेद नगण्य हैं? हमारा ऐप संभावित 1,000,000 उपयोगकर्ताओं (लगभग 100,000 समवर्ती) को लक्षित कर रहा है।

अग्रिम में धन्यवाद!


4
" नए रेजर " से आपका मतलब रेजर पेज से है?
वर्नर

36
तो आपने आखिर में किसे चुना और यह कैसे चल रहा है?
stt106

5
इस प्रोजेक्ट के साथ आप कैसे (या आप मिल रहे हैं)? मैं अब आपके साथ लगभग समान स्थिति में हूं और एक अद्यतन पसंद करूंगा!
JLo

10
हाय JLo और stt106। खेद है कि प्रतिक्रिया देने में इतना समय लगा। हमने Azure SQL का उपयोग करते हुए एक कोणीय मोर्चे के अंत और एक ASP.NET कोर एपीआई बैकएंड के साथ जाना समाप्त किया। इसने हमारे लिए अब तक शानदार काम किया है! मुझे लगता है कि अगर आप इसके साथ अधिक सहज होते हैं तो रिएक्टर एंगुलर के समान प्रतिस्थापन होगा। मुझे एंगुलर सीखना था, जो एक बहुत ही आसान संक्रमण था, और मैं इसे अब प्यार करता हूँ!
TchPowDog

ASP.Net कोर बनाम कोणीय / प्रतिक्रिया की गति तुलना ऑफ टॉपिक है? इसके लिए विहित उत्तर हो सकते हैं। आज के लिए हमारे पास कोर 2.2 और जल्द ही 3.0 है।
मिक्रोदेल

जवाबों:


74

हमने Azure SQL का उपयोग करते हुए एक कोणीय मोर्चे के अंत और एक ASP.NET कोर एपीआई बैकएंड के साथ जाना समाप्त किया। हमने कोर रेजर का परीक्षण किया और, हालांकि विरासत रेजर से बेहतर, कोणीय अंत में हमारे लिए बहुत तेज था। जहाँ तक उपयोगकर्ता अनुभव जाता है, प्रदर्शन के मामले में कोणीय (या प्रतिक्रिया) कहीं बेहतर है। एंगुलर के मॉडल-बाइंडिंग पहलुओं को हमने सर्वर-साइड रेंडरिंग का विशाल लाभ पाया। रेज़र (या सामान्य रूप से सर्वर साइड रेंडरिंग) का उपयोग करना, हालांकि, डेटा के जाने तक बेहतर समग्र अखंडता के लिए खुद को उधार देता है और यह फ्रंट-एंड से बैक-एंड तक डेटा के बेहतर संक्रमण के लिए बनाता है। फ्रंट-एंड फ्रेमवर्क और एपीआई के बीच एक वास्तविक डिस्कनेक्ट है। सर्वर पर जाने वाले सभी डेटा को टाइप किए गए ऑब्जेक्ट में डालना होगा - इसका मतलब है कि आपको दो अलग-अलग POCO मॉडल सेट का प्रबंधन करना होगा। यदि सर्वर ऑब्जेक्ट और फ्रंट-एंड ऑब्जेक्ट्स संरेखित नहीं करते हैं तो यह समस्याएँ पैदा कर सकता है। फिलहाल, Entity Framework Core बहुत परिपक्व नहीं है, इसलिए हमारे पास ऑब्जेक्ट्स को अपडेट करने, ऑब्जेक्ट्स को क्वेरी करने, जिसमें चाइल्ड ऑब्जेक्ट्स आदि शामिल हैं, के साथ समस्याएँ हैं।

कुल मिलाकर, इस सेटअप ने हमारे लिए अब तक शानदार काम किया है! मुझे लगता है कि अगर आप इसके साथ अधिक सहज होते हैं तो रिएक्टर एंगुलर के समान प्रतिस्थापन होगा। मुझे एंगुलर सीखना था, जो एक बहुत ही आसान संक्रमण था, और मैं इसे अब प्यार करता हूँ!


5
जहाँ तक दो POCO मॉडल सेट सिंक रखने की बात है तो VS के लिए वास्तव में उपयोगी विस्तार है जो MVC मॉडल से कोणीय इंटरफेस बनाता है, टाइपराइटर देखें
एंडी ब्रहम

ठीक है, व्यक्तिगत रूप से, अगर मुझे कोणीय के साथ जाना था, तो मैं DB भाग के लिए NoSql का उपयोग करूंगा।
वेंजेंटेक्स

2
मैं कोणीय के ऊपर ASP.NET रेजर का चयन करने की कल्पना नहीं कर सकता। पूर्व में ASP.NET ने .NET डेवलपर्स के लिए कुछ परिचित कोड दिए थे, लेकिन RAZOR के साथ, लर्निंग कर्व उच्चतर है फिर कोणीय का उपयोग करते हुए। MVC HTML से तर्क विभाजित करता है।
मार्क

1
@ मर्क मैं ऐसा नहीं मानता। रेजर पेज सही हैं, विशेष रूप से जिस तरह से वे डेटा बाइंडिंग को संभालते हैं। वे अभी बहुत गोद हैं। लेकिन उसके परिदृश्य कोणीय के लिए टोक़ पूरी तरह से अनुकूल है।
मोसिया थाबो

2
@MosiaThabo, मार्क रेजर पेज के बारे में बात नहीं कर रहा है, वह रेजर के बारे में बात कर रहा है। जिसे मेरे ओपी ने संदर्भित किया है। अपने मूल पोस्ट में, मैं रेज़र पेज (या अब ब्लेज़र कहा जाता है, मुझे लगता है) का उल्लेख नहीं कर रहा था। मैं विशेष रूप से क्लाइंट-साइड प्रतिपादन बनाम सर्वर-साइड प्रतिपादन के बारे में बात कर रहा था। रेज़र पेज माइक्रोसॉफ्ट के एंगुलर / रिएक्ट का स्वाद है, जो मुझे लगता है कि वे एंगुलर और रिएक्ट के साथ होने वाले फायदों के कारण आवश्यक हैं।
TchPowDog

49

सर्वर पक्ष पर एपीआई के साथ कोणीय / प्रतिक्रिया का उपयोग करके:

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

लेकिन कोणीय / प्रतिक्रिया का उपयोग करके, आपको ग्राहकों के बारे में चिंतित होना चाहिए:

  • क्लाइंट को जावास्क्रिप्ट सक्षम करना चाहिए
  • क्लाइंट के पास आधुनिक ब्राउज़र होना चाहिए
  • क्लाइंट के पास पर्याप्त शक्तिशाली हार्डवेयर होना चाहिए
  • एसईओ

1
मैं दो रूपरेखाओं में अंतर को समझता हूं, मैं प्रदर्शन से अधिक चिंतित था।
TchPowDog

दोनों के लिए समान पाइपलाइन मौजूद है, लेकिन मुझे पता नहीं है कि रेजर पृष्ठों के लिए कोई बेंचमार्क मौजूद है। यह लिंक मदद कर सकता है - ASP.NET रेजर पेज बनाम MVC: रेजर पेज आपके टूलबॉक्स में कैसे फिट होते हैं?
मोहसिन एस्मेलपोर

1
रेजर मोबाइल का समर्थन करता है, नुकसान वास्तव में सूचीबद्ध नहीं हैं। दोनों अपने-अपने तरीके से तेज हैं। मुझे कोणीय पसंद है, लेकिन दोनों अनुकूलित हैं। रेजर एमवीसी जैसे पेड़ का उपयोग न करके कोड का अनुकूलन करता है। कोणीय ग्राहक पक्ष है इसलिए यह वास्तव में एक पेड़ का उपयोग नहीं करता है, लेकिन एक हद तक HTML में डेटा का अनुकूलन भी करता है।
निक टर्नर

@NickTurner मैंने इसे केवल अपने स्मार्टफोन पर वेबपेज देखने के लिए नहीं, बल्कि एक पूर्ण ऐप के रूप में समझा। उदाहरण के लिए, एक एंड्रॉइड ऐप, जो अपरिवर्तित सर्वर एपीआई से डेटा प्राप्त कर सकता है, जबकि दूसरी ओर कार्यक्षमता का उपयोग करने वाला एंड्रॉइड प्रदान करता है - बेहतर एनीमेशन समर्थन, सूचनाएं, टोस्ट संदेश आदि
राफेल शमित्ज़

23

मेरे पास बेंचमार्क नहीं हैं। लेकिन, मेरे पास JQuery, रेजर, .NET MVC (C #), AJAX चलाने वाली कई परियोजनाएं हैं। उस पैमाने पर नहीं जो आप निपटा रहे हैं।

सलाह .. सबसे अच्छी प्रथाओं के माध्यम से चीजों को सोचना और उनका पालन करना सुनिश्चित करें। चीजों को बनाए रखने के लिए नियंत्रकों, विचारों, मॉडल को छोटे और सार्थक समूहों में तोड़ना सुनिश्चित करें। जब मैंने शुरुआत की, तो मैंने एक होम कंट्रोलर में सब कुछ डालने की गलती की, और साझा फ़ोल्डर में एक टन दृश्य। पहले तो ठीक था लेकिन जब फीचर रेंगना शुरू हुआ, तो यह एक गड़बड़ हो गया और वापस जाना और फिर से डिज़ाइन करना मुश्किल हो गया।

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

यदि आप .NET MVC जाते हैं और प्रदर्शन के बारे में चिंतित हैं, तो ये चीजें हैं जो मैं भाग गया:

HTML के बड़े ब्लॉक बनाने वाले आंशिक विचार वापस न करें! सब कुछ कम से कम करना सुनिश्चित करें। सभी सफेद स्थान से छुटकारा पाएं। छोटी आईडी नामों का उपयोग करें। Html बनाने के लिए समय निकालें जो जितना संभव हो उतना हल्का हो। JSON लौटाएं और क्लाइंट के पास कुछ काम करें।

आप अपने सीएसएस को कैसे विकसित करते हैं, इस पर सावधान रहें। इनलाइन शैलियों का एक गुच्छा का उपयोग न करें, CSS फाइलों में शामिल करने के लिए समय निकालें जिन्हें आप बाद में कम कर सकते हैं।

वही आपके क्लाइंट पक्ष JS के लिए जाता है। यह जेएस को आंशिक विचारों के अंदर रखने के लिए लुभा रहा है। चीजों को व्यवस्थित रखें।

IE पर भरोसा करना भयानक है। खासकर अगर बहुत सारी छवियां हैं। पाठ्यक्रम की गुणवत्ता को खोए बिना, जितना संभव हो सके चित्रों को संपीड़ित करना सुनिश्चित करें।

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