क्या, क्यों या जब cshtml बनाम aspx चुनना बेहतर है?


108

मैं जानना चाहूंगा कि cshtml का चयन करना बेहतर क्या है, क्यों या कब और क्यों, एस्पिरेट टेक्नोलॉजीज चुनना बेहतर है या क्यों? इन दो तकनीकों का क्या उद्देश्य है?

धन्यवाद,


मुझे नहीं लगता कि मैंने microsoft.com वेबसाइट में कहीं भी cshtml फाइलें देखी हैं।
user34660

@ user34660 आप कैसे निर्धारित करते हैं कि यह cshtml या aspx है? विस्तार छुपा हुआ है।
सजुकु

जवाबों:


111

जैसा कि अन्य लोगों ने उत्तर दिया है, .cshtml(या .vbhtmlयदि आपका स्वाद है) एमवीसी इंजन को लोड करने के लिए एक हैंडलर-मैपिंग प्रदान करता है। यह .aspxएक्सटेंशन केवल aspnet_isapi.dll को लोड करता है जो संकलन करता है और वेब प्रपत्रों की सेवा करता है। हैंडलर मैपिंग में अंतर केवल एक ही सर्वर पर दोनों को सह-अस्तित्व में रखने की अनुमति देने का एक तरीका है जो MVC अनुप्रयोगों और WebForms अनुप्रयोगों दोनों को एक सामान्य रूट के तहत रहने की अनुमति देता है।

इससे http://www.mydomain.com/MyMVCApplication वैध हो सकता है और एक मानक वेब फॉर्म के रूप में मान्य होने के लिए http://www.mydomain.com/MyWebFormsApplication के साथ MVC नियमों के साथ सेवा की जाती है ।

संपादित करें:
प्रौद्योगिकियों के अंतर के रूप में, MVC (रेजर) टेम्प्लेटिंग फ्रेमवर्क को वापस करने का इरादा है। टेम्प्लेटेड विचारों के एक अधिक विश्वसनीय "वेब-आधारित" प्लेटफ़ॉर्म पर नेट पृष्ठों को मॉडल (व्यापार / डेटा ऑब्जेक्ट) के बीच कोड तर्क को अलग करने के लिए; दृश्य (उपयोगकर्ता क्या देखता है) और नियंत्रक (दोनों के बीच संबंध)। WebForms मॉडल (aspx) Microsoft द्वारा जटिल जावास्क्रिप्ट जावास्क्रिप्ट का उपयोग करने का एक प्रयास था, जो कि एक WinForms अनुप्रयोग के समान घटनाओं और एक पृष्ठ जीवनचक्र के समान एक अधिक स्टेटफुल एप्लिकेशन का अनुकरण करने के लिए है जो पृष्ठ से पृष्ठ पर अपने स्वयं के राज्य को बनाए रखने में सक्षम होगा।

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


11
+1, यह एक महत्वपूर्ण बिंदु है। ASP.NET वेब फॉर्म के बीच अंतर के लिए स्टेटलेस वातावरण बनाने का उद्देश्य है।
स्मार्टवॉमन

Cshtml की तुलना में aspx का एक बड़ा फायदा यह है कि आप डिज़ाइन टैब का उपयोग करके पेज को स्वयं (WUSIWYG तरह का) देख और संपादित कर सकते हैं। Cshtml फ़ाइलों के साथ आप अपने html पृष्ठ को संपादित करने के लिए नोटपैड का उपयोग कर सकते हैं। आप "अंधेरे में" काम कर रहे हैं।
nivs1978

@ nivs1978: मैं वास्तव में इसे इसका डाउन-साइड मानता हूं। बहुत से डेवलपर्स इसे मैला मार्कअप लिखने के लिए एक बैसाखी के रूप में उपयोग करते हैं। अंत में, डिजाइनर आपको केवल पृष्ठ का "लगभग" संस्करण दिखाने में सक्षम है क्योंकि यह केवल अपने स्वयं के आंतरिक "ब्राउज़र" के साथ दृश्य प्रस्तुत करेगा। जब आप एक सामान्य ज्ञान प्राप्त कर सकते हैं कि कोई पृष्ठ कैसे प्रदर्शित होगा, तब भी आप तब तक नहीं जान सकते जब तक कि यह एक सच्चे ब्राउज़र में प्रदान न हो जाए।
जोएल एथरटन

44

रेजर ASP.NET MVC के लिए एक दृश्य इंजन है , और एक टेम्पलेट इंजन भी है । रेजर कोड और ASP.NET इनलाइन कोड (मार्कअप के साथ मिश्रित कोड) दोनों पहले संकलित हो जाते हैं और निष्पादित होने से पहले एक अस्थायी विधानसभा में बदल जाते हैं। इस प्रकार, C # और VB.NET की तरह दोनों ही IL को संकलित करते हैं जो उन्हें विनिमेय बनाता है, रेजर और इनलाइन कोड दोनों परस्पर विनिमय योग्य हैं।

इसलिए, यह शैली और रुचि की बात है। मैं ASP.NET इनलाइन कोड के बजाय रेजर के साथ अधिक सहज हूं, अर्थात, मैं .aspx पृष्ठों के लिए रेजर (cshtt) पृष्ठों को पसंद करता हूं।

कल्पना करें कि आप एक Humanकक्षा प्राप्त करना चाहते हैं , और इसे प्रस्तुत करना चाहते हैं। में cshtml फ़ाइलें आप लिखते हैं:

<div>Name is @Model.Name</div>

जबकि aspx फ़ाइलों में आप लिखते हैं:

<div>Name is <%= Human.Name %></div>

जैसा कि आप देख सकते हैं, @रेजर का चिह्न मिश्रण कोड और मार्कअप को बहुत आसान बनाता है।


6
@ MikaëlMayer, रेजर में, Modelदृढ़ता से टाइप किए गए विचारों के लिए उपयोग किया जाता है, जिसमें आप modelकीवर्ड का उपयोग करके शीर्ष पर अपने प्रकार को परिभाषित करते हैं ।
सईद नेमाटी

आपके लिए एक छोटा सा सवाल @SaeedNeamati… । मुझे व्यक्तिगत रूप से cshtml सिंटैक्स आसान लगा।
कोडिमिलन

अच्छा जवाब ... यह उत्तर समझने में बहुत आसान है ..., कम से कम मेरे जैसे शुरुआती के लिए :)
eRaisedToX

10

जबकि रेज़र ( .cshtml/ .vbhtml) और WebForms ( .aspx/ .ascx), (रेज़र का अधिक संक्षिप्त और आधुनिक होना दोनों) के बीच वाक्यविन्यास निश्चित रूप से भिन्न है , किसी ने भी उल्लेख नहीं किया है कि दोनों का उपयोग View Engines / Templating Engines, पारंपरिक ASP.NET के रूप में किया जा सकता है वेब फ़ॉर्म नियंत्रण किसी भी .aspx या .ascx फ़ाइलों पर उपयोग किया जा सकता है, (यहां तक ​​कि MVC वास्तुकला के साथ सामंजस्य में)।

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

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


जब मैंने यह लिखना शुरू किया, तो जोएल ने अपना संपादन नहीं किया था, लेकिन मैं इसे उस स्थिति में छोड़ दूंगा, जब कोई इसे मददगार मिले
smartcaveman

4

Cshtml फाइलें रेजर द्वारा उपयोग की गई हैं और जैसा कि इस प्रश्न के उत्तर के रूप में कहा गया है , उनका मुख्य लाभ यह है कि उन्हें यूनिट परीक्षणों के साथ प्रदान किया जा सकता है। इस अन्य विषय के विभिन्न उत्तर कई अन्य दिलचस्प बिंदुओं को सामने लाएंगे।

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