2011-11-12 11 views
8

के लिए जा रहा है जैसे मैं उस्तरा इंजन को देख रहा हूँ और मैं सोच रहा हूँ कि यह कैसे "अलग" है प्रारंभिक क्लासिक एएसपी कार्यान्वयन की तुलना में जहां सर्वर साइड और सामने के अंत कोड जहां में एक ही पृष्ठरेजर का उपयोग कर रहा है थोड़े वापस क्लासिक एएसपी

मुझे रेजर की परवाह क्यों करनी चाहिए?

+0

इस धागे का संभावित डुप्लिकेट http://stackoverflow.com/questions/558002/asp-net-mvc-classic-asp-with-net-class-library-really – Chandermani

+0

@Chandermani - यह एएसपी.NET एमवीसी के बारे में नहीं है उस्तरा। – klabranche

+1

@ क्लेब्रैंच दृश्य इंजन कोई फर्क नहीं पड़ता, यहां चिंता यूआई और सर्वर साइड कोड का अंतःक्रिया है। – Chandermani

उत्तर

7

क्लासिक एएसपी में, आपके पास व्यवसाय कोड आपकी फ़ाइल में था ("डेटाबेस से सामान प्राप्त करें और उस पर कार्य करें")।

ASP.net MVC में - परवाह किए बिना अगर आप का उपयोग ASPX या उस्तरा दृश्य इंजन - आप देखें तर्क के साथ काम कर रहे हैं। चीजें "मेरे पास 20 कर्मचारी हैं, उन्हें एक टेबल में प्रदर्शित करें" या "यदि यह संख्या ऋणात्मक है, तो इसे काले रंग के बजाय लाल रंग में प्रदर्शित करें"।

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

आप यहां व्यवसाय तर्क डालने की गलती कर सकते हैं। कहें, 2008 से पहले किराए पर रखे गए कर्मचारी वफादारी प्रमाणपत्र के पात्र हैं। तो आपकी तालिका में एक कॉलम "प्रिंट सर्टिफिकेट" है जो केवल इनके लिए प्रदर्शित होता है। आसान है, लेकिन गलत दृष्टिकोण एक अगर बयान डाल करने के लिए है:

@if(employee.HireYear <= 2008) { 
    Html.ActionLink("Print Certificate","Certificate","Cheese", 
     new { id = employee.Id }, null); 
} 

यह काम करता है, लेकिन गलत है, क्योंकि दृश्य अब व्यापार तर्क होते हैं। सही दृष्टिकोण ViewModel में एक नया बूल फ़ील्ड जोड़ रहा है। चूंकि इसमें इस उदाहरण में IList<Employee> है, इसका मतलब है कि योग्य और अयोग्य कर्मचारियों के लिए अलग-अलग सूचियां रखने के लिए EmployeeWithCertificateEligibility कक्षा या बेहतर बनाना है। यह कुछ हद तक आम है हालांकि व्यापार तर्क तर्क में फैल गया है, कभी-कभी एचटीएमएल हेल्पर एक्सटेंशन विधि के रूप में।

संपादित करें: आप इसकी तुलना "प्रारंभिक क्लासिक एएसपी कार्यान्वयन" से करते हैं। इसका अर्थ तीन चीजें हो सकता है: क्लासिक एएसपी, एएसपीनेट वेबफॉर्म या एएसपीनेट एमवीसी वेबफॉर्म/एएसपीएक्स व्यू इंजन के साथ। मेरा उदाहरण पहले दो मामलों से संबंधित है। यदि आप पहले से ही पूरी एमवीसी सामग्री को जानते हैं और वेबफॉर्म और रेजर व्यू इंजन के बीच मतभेदों के बारे में सोचते हैं: संकल्पनात्मक रूप से वे वही हैं, रेजर बहुत कम वर्बोज़ और क्लीनर है।

6

यह सब कुछ है कि आप इसका उपयोग कैसे करते हैं।

मुख्य लाभ यह है मैं रेजर के देखते हैं कि यह एक डेवलपर अधिक कॉम्पैक्ट और बहुत स्पार्क या NHaml की तरह उनकी लेआउट के साथ अर्थपूर्ण होने की अनुमति देता है कि यह है।

इसके बजाय लेखन के

:

<% Foreach(var x....) { %> 
<li><%=x.PropertyName%> (<%=x.AnotherProperty%>)</li> 
<% } </%> 

आप इसे एक अधिक तरल पदार्थ तरह से लिख सकते हैं:

@foreach(var x...) { 
<li>@x.PropertyName (@x.AnotherProperty)</li> 
} 

यह पढ़ने में आसान है, और अधिक अच्छी तरह से बहती है और अधिक जटिल मामलों में कम कोड हो सकता है।

वास्तविकता यह है कि उस्तरा और यहां तक ​​कि क्लासिक WebForms आप अपने कोड मिश्रण और एक साथ मार्कअप सकता है।

यह पता करने के लिए जब यह एक अच्छी बात है या एक बुरी बात करना है सांकेतिक शब्दों में बदलनेवाला पर निर्भर है।

क्या दृश्य में थोड़ा तर्क छिड़कना बुरा है। शायद नहीं। क्या आपके पूरे तर्क को सबसे अधिक संभावना हां में लिखना बुरा है। क्या होगा यदि यह एक साधारण दो पेज ऐप बनाम एक एंटरप्राइज़ एप्लिकेशन है ..... मुझे लगता है कि आपको मेरा बहाव मिल जाएगा। :-)

Here's a nice write up और another कुछ चीजों में से रेजर ऐसा कर सकता है जो क्लासिक एएसपी की तुलना में इसे अधिक शक्तिशाली दृश्य इंजन बनाता है।

एक अलग विचार। रेजर एक व्यू इंजन है। यह दृश्य को क्राफ्ट करने में हमारी नौकरी को आसान बनाने के लिए डिज़ाइन किया गया है। यह हमारे पूरे अनुप्रयोग तर्क कोडिंग के लिए डिज़ाइन/मतलब नहीं है। यदि आप हैं, तो आप निश्चित रूप से इसे गलत कर रहे हैं।

क्लासिक एएसपी वास्तव में कोड इंजन बनाम क्या है इसका एक आसान भेद नहीं था।

0

आपका प्रश्न यह दर्शाता है कि आप एएसपी.नेट एमवीसी के साथ गति में नहीं हैं। आपका प्रश्न एएसपी.नेट एमवीसी वेबफॉर्म पर लागू होता है, न केवल .cshtml या .vbhtml फ़ाइलों पर। हां, आपका प्रश्न एमवीसी में दृश्यों के बारे में है।

सीखने के घटता के संदर्भ में, आप घोड़े को गाड़ी से पहले रख रहे हैं। एमवीसी पर कोई भी पुस्तक एमवीसी, एएसपी.नेट सादे वेनिला के बीच मतभेदों के वर्णन से शुरू होगी, और जिसे एएसपी.कॉम या शास्त्रीय एएसपी कहा जा सकता है।

रेजर या पसंद के आपके व्यू इंजन का उपयोग कर एमवीसी में आपके विचारों में जो तर्क आप लिखते हैं वह प्रदर्शन तर्क है। एएसपी शास्त्रीय कोई तर्क, व्यवसाय, प्रदर्शन, डेटा पहुंच था ...

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

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

+1

अच्छी सलाह ... हालांकि मुझे लगता है कि घोड़े को 'कार्ट से पहले जाना चाहिए ;-) – puddleglum

संबंधित मुद्दे