जवाबों:
ASP.net MVC के मुख्य लाभ हैं:
प्रदान किए गए HTML पर पूर्ण नियंत्रण सक्षम करता है।
चिंताओं (SoC) की साफ जुदाई प्रदान करता है।
टेस्ट ड्रिवेन डेवलपमेंट (TDD) सक्षम करता है ।
जावास्क्रिप्ट चौखटे के साथ आसान एकीकरण।
वेब के स्टेटलेस प्रकृति के डिजाइन का अनुसरण करना।
Restful urls जो SEO को सक्षम करता है।
कोई ViewState और पोस्टबैक इवेंट नहीं
ASP.net वेब फॉर्म का मुख्य लाभ हैं:
यह आरएडी विकास प्रदान करता है
विजेता विकास से आने वाले डेवलपर्स के लिए आसान विकास मॉडल।
ASP.NET वेब फॉर्म और MVC Microsoft द्वारा विकसित दो वेब फ्रेमवर्क हैं - वे दोनों अच्छे विकल्प हैं। न तो वेब फ्रेमवर्क को दूसरे द्वारा प्रतिस्थापित किया जाना है और न ही उन्हें एक फ्रेमवर्क में 'मर्ज' करने की योजना है। निरंतर समर्थन और विकास Microsoft द्वारा समानांतर रूप से किया जाता है और न ही 'दूर जा रहा' होगा।
इनमें से प्रत्येक वेब फ्रेमवर्क लाभ / हानि प्रदान करता है - जिनमें से कुछ को वेब एप्लिकेशन विकसित करते समय विचार करने की आवश्यकता होती है। एक वेब एप्लिकेशन को या तो प्रौद्योगिकी का उपयोग करके विकसित किया जा सकता है - यह एक विशेष एप्लिकेशन के लिए विकास को आसान बना सकता है एक प्रौद्योगिकी का चयन दूसरे के विपरीत और इसके विपरीत।
ASP.NET वेब फ़ॉर्म:
ASP.NET MVC:
प्रमाणीकरण, प्राधिकरण, कॉन्फ़िगरेशन, संकलन और परिनियोजन सभी सुविधाएँ हैं जो दो वेब फ्रेमवर्क के बीच साझा की जाती हैं ।
क्लासिक एएसपी को याद करने के लिए कोई भी पुराना हो, उसे html और जावास्क्रिप्ट के साथ मिश्रित कोड वाला पृष्ठ खोलने का दुःस्वप्न याद होगा - यहां तक कि सबसे छोटे पृष्ठ को यह पता लगाने के लिए दर्द था कि यह क्या कर रहा था। मैं गलत हो सकता हूं, और मुझे आशा है कि मैं हूं, लेकिन एमवीसी उन बुरे पुराने दिनों में वापस जाने की तरह दिखता है।
जब ASP.Net इसके साथ आया था तो उद्धारकर्ता के रूप में इसका स्वागत किया गया था, सामग्री से कोड को अलग करने और हमें वेब डिज़ाइनर बनाने की अनुमति देकर html और कोडर्स को पीछे के कोड पर काम करते हैं। अगर हम ViewState का उपयोग नहीं करना चाहते थे, तो हमने इसे बंद कर दिया। यदि हम किसी कारण से कोड का उपयोग नहीं करना चाहते हैं, तो हम अपने कोड को क्लासिक एएसपी की तरह ही html के अंदर रख सकते हैं। यदि हम PostBack का उपयोग नहीं करना चाहते हैं, तो हम प्रसंस्करण के लिए किसी अन्य पृष्ठ पर पुनर्निर्देशित कर देते हैं। यदि हम ASP.Net नियंत्रणों का उपयोग नहीं करना चाहते हैं तो हम मानक html नियंत्रणों का उपयोग करते हैं। यदि हम ASP.Net रनैट = "सर्वर" का उपयोग अपने नियंत्रण पर नहीं करना चाहते हैं, तो हम रिस्पांस ऑब्जेक्ट से भी पूछताछ कर सकते हैं।
अब किसी ने अपने महान ज्ञान में (शायद कोई व्यक्ति जिसने कभी एएसपी को प्रोग्राम नहीं किया था) ने निर्णय लिया है कि सामग्री के साथ कोड मिश्रण करने के दिनों में वापस जाएं और इसे "चिंताओं को अलग करना" कहें। ज़रूर, आप क्लीनर html बना सकते हैं, लेकिन आप क्लासिक एएसपी के साथ कर सकते हैं। यह कहने के लिए कि "आप सही ढंग से प्रोग्रामिंग नहीं कर रहे हैं यदि आपके पास अपने दृश्य के अंदर बहुत अधिक कोड है" तो यह कहना "जैसा है कि यदि आपने क्लासिक एएसपी में अच्छी तरह से संरचित और टिप्पणी की गई कोड लिखा है तो यह ASP.NET से कहीं अधिक साफ और बेहतर है"
अगर मैं सामग्री के साथ मिश्रण कोड पर वापस जाना चाहता था, तो मैं PHP का उपयोग करके विकास करूँगा जो उस तरह के विकास के लिए कहीं अधिक परिपक्व वातावरण है। अगर ASP.NET के साथ बहुत सारी समस्याएं हैं तो उन मुद्दों को ठीक क्यों नहीं किया जाए?
अंतिम लेकिन कम से कम नया रेजर इंजन का मतलब यह नहीं है कि HTML और कोड के बीच अंतर करना और भी कठिन है। कम से कम हम एएसपी में </%> टैग खोलने और बंद करने के लिए देख सकते थे, लेकिन अब केवल संकेत @ प्रतीक होगा।
यह समय हो सकता है कि PHP में स्थानांतरित हो और किसी और को कोड को एक बार फिर से सामग्री से अलग करने के लिए एक और 10 वर्षों तक इंतजार करना पड़े।
यदि आप अन्य डेवलपर्स के साथ काम कर रहे हैं, जैसे कि PHP या JSP (और मैं अनुमान लगाता हूं) - तो आप पृष्ठों पर रूपांतरण या सहयोग करने में बहुत आसान समय पाएंगे क्योंकि आपके पास उन सभी 'गंदा' ASP.NET नहीं हैं घटनाओं और नियंत्रण हर जगह।
एमवीसी के साथ समस्या यह है कि "विशेषज्ञों" के लिए भी यह बहुत मूल्यवान समय खाता है और इसके लिए बहुत प्रयास की आवश्यकता होती है। व्यवसाय बुनियादी चीज "क्विक सॉल्यूशन जो काम करता है" द्वारा संचालित होते हैं, इसके पीछे तकनीक की परवाह किए बिना। WebForms एक RAD तकनीक है जो समय और धन की बचत करती है। कुछ भी जिसके लिए अधिक समय की आवश्यकता होती है वह व्यवसायों द्वारा स्वीकार्य नहीं है।
मेरे लिए सबसे बड़ा एकल लाभ आपके मॉडल, दृश्य और नियंत्रक परतों के बीच स्पष्ट-कट अलगाव होगा। यह शुरू से ही अच्छे डिजाइन को बढ़ावा देने में मदद करता है।
मैंने ASP.Net पर MVC में कोई लाभ नहीं देखा है। 10 साल पहले MVC के जवाब के रूप में Microsoft UIP (उपयोगकर्ता इंटरफ़ेस प्रक्रिया) के साथ आया था। यह एक फ्लॉप थी। हमने UIP के साथ एक बड़ा प्रोजेक्ट (4 डेवलपर्स, 2 डिज़ाइनर, 1 टेस्टर) किया और फिर यह एक सरासर बुरा सपना था।
केवल प्रचार के लिए बैंडवादन में कूद मत। ऊपर सूचीबद्ध सभी फायदे पहले से ही Asp.Net में उपलब्ध हैं ( Asp.Net 4 में नई सुविधाएँ [ Asp.Net 4 में नई सुविधाएँ ])।
यदि आपकी विकास टीम या Asp.Net के साथ एक एकल डेवलपर परिवार बस इससे चिपके रहते हैं और अपने ग्राहकों (जो आपके काम के घंटों का भुगतान करते हैं) को संतुष्ट करने के लिए जल्दी से सुंदर उत्पाद बनाते हैं। MVC आपका मूल्यवान समय खाएगा और Asp.Net :-) के समान परिणाम देगा
फ्रांसिस शहनहान,
आप आंशिक पोस्टबैक को "बकवास" क्यों कहते हैं? यह अजाक्स की मुख्य विशेषता है और इसका उपयोग एटलस ढांचे में बहुत अच्छी तरह से किया गया है और टेलरिक जैसे अद्भुत तीसरे पक्ष के नियंत्रण हैं
मैं आपके दृष्टिकोण के संबंध में सहमत हूं। लेकिन अगर डेवलपर्स व्यूस्टेट को अक्षम करने के लिए सावधान हैं, तो यह HTML के आकार को बहुत कम कर सकता है जो प्रदान किया जाता है इस प्रकार पृष्ठ हल्का वजन बन जाता है।
ASP.NET वेब फॉर्म मॉडल में केवल HTML सर्वर नियंत्रणों का नाम बदला गया है न कि शुद्ध HTML नियंत्रण। जो कुछ भी हो सकता है, अगर नाम बदला गया है तो आप क्यों चिंतित हैं? मुझे पता है कि आप ग्राहक की बहुत सारी जावास्क्रिप्ट घटनाओं से निपटना चाहते हैं लेकिन यदि आप अपने वेब पेजों को स्मार्ट तरीके से डिजाइन करते हैं, तो आप निश्चित रूप से सभी आईडी प्राप्त कर सकते हैं जो आप चाहते हैं
यहां तक कि ASP.NET वेब फॉर्म एक्सएचटीएमएल मानकों को पूरा करता है और मुझे कोई ब्लोटिंग नहीं दिखाई देती है। यह एक औचित्य नहीं है कि हमें एमवीसी पैटर्न की आवश्यकता क्यों है
फिर, आप AXD जावास्क्रिप्ट के साथ क्यों परेशान हैं? इससे आपको तकलीफ क्यों होती है? यह फिर से वैध औचित्य नहीं है
अब तक, मैं क्लासिक ASP.NET वेब रूपों का उपयोग करके विकासशील अनुप्रयोगों का प्रशंसक हूं। उदाहरण के लिए: यदि आप एक ड्रॉपडेललिस्ट या ग्रिडव्यू को बांधना चाहते हैं, तो आपको अधिकतम 30 मिनट की आवश्यकता होगी और कोड की 20 से अधिक पंक्तियों (न्यूनतम पाठ्यक्रम) की आवश्यकता नहीं होगी। लेकिन एमवीसी के मामले में, डेवलपर्स से बात करें कि यह कितना दर्द है।
एमवीसी का सबसे बड़ा नकारात्मक पहलू यह है कि हम एएसपी के दिनों में वापस जा रहे हैं। सर्वर कोड और HTML को मिलाने के स्पेगेटी कोड को याद रखें ??? हे भगवान, जावास्क्रिप्ट, HTML, JQuery, सीएसएस, सर्वर टैग के साथ मिश्रित एक MVC aspx पृष्ठ को पढ़ने की कोशिश करो और क्या नहीं .... कोई भी शरीर इस प्रश्न का उत्तर दे सकता है?
वेब फॉर्म भी अधिक परिपक्वता से लाभ प्राप्त करते हैं और टेलरिक जैसे तीसरे पक्ष के नियंत्रण प्रदाताओं से समर्थन प्राप्त करते हैं।
वेबफ़ॉर्म्स में आप लगभग पूरे HTML को हाथ से प्रस्तुत कर सकते हैं, केवल कुछ टैग, जैसे कि व्यूस्टेट, ईवेंटवैलिडेशन और इसी तरह के कुछ टैग्स को छोड़कर, जिसे पेज एडेप्टर के साथ हटाया जा सकता है। कोई भी आपको GridView या किसी अन्य सर्वर साइड कंट्रोल का उपयोग करने के लिए मजबूर नहीं करता है जिसमें खराब HTML रेंडरिंग आउटपुट है।
मैं कहूंगा कि MVC का सबसे बड़ा फायदा SPEED है!
अगला चिंता का अलगाव है। लेकिन यह आपको संपूर्ण बीएल और डीएएल लॉजिक को कंट्रोलर / एक्शन के अंदर रखने से मना नहीं करता है! यह सिर्फ देखने का अलगाव है, जिसे वेबफॉर्म (उदाहरण के लिए MVP पैटर्न) में भी किया जा सकता है। बहुत सी चीजें जिनका लोग mvc के लिए उल्लेख करते हैं, उन्हें वेबफॉर्म में किया जा सकता है, लेकिन कुछ अतिरिक्त प्रयासों के साथ।
मुख्य अंतर यह है कि अनुरोध नियंत्रक पर आता है, न कि देखने के लिए, और उन दो परतों को अलग किया जाता है, जो आंशिक वर्ग जैसे वेबफॉर्म (एस्पेक्स + कोड पीछे) के माध्यम से जुड़ा नहीं है
मेरे 2 सेंट:
एमवीसी आपको एक पृष्ठ पर एक से अधिक फॉर्म देता है, एक छोटी सी सुविधा जिसे मैं जानता हूं लेकिन यह आसान है!
इसके अलावा एमवीसी पैटर्न मुझे लगता है कि कोड को बनाए रखना आसान है, एस्प। जब आप कुछ महीनों के बाद इसका पुनरीक्षण करेंगे।
runat="server"
जब आप अभी भी वेबफ़ॉर्म का उपयोग करना चाहते हैं, तो नॉन फॉर्म टैग में बहुत अधिक उपयोग नहीं होता है , और जब से आप रूपों को नहीं कर सकते / नहीं चाहिए, मुझे लगता है कि यह थोड़े स्पष्ट है कि उनका क्या मतलब है :)
MVC नियंत्रक:
[HttpGet]
public ActionResult DetailList(ImportDetailSearchModel model)
{
Data.ImportDataAccess ida = new Data.ImportDataAccess();
List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);
return PartialView("ImportSummaryDetailPartial", data);
}
MVC देखें:
<table class="sortable">
<thead>
<tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
@foreach (Data.ImportDetailData detail in Model)
{
<tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
}
</tbody></table>
कितना कठिन है? कोई ViewState, कोई बीएस पेज जीवन-चक्र ... बस शुद्ध कुशल कोड।
मैं छोटी साइटों के लिए केवल दो फायदे देख सकता हूं: 6) एसईओ करने में सक्षम यूआरएल। 7) कोई ViewState और पोस्टबैक इवेंट (और सामान्य रूप से अधिक प्रदर्शन)
छोटी साइटों के लिए परीक्षण कोई समस्या नहीं है, न ही डिज़ाइन के फायदे हैं जब किसी साइट को वैसे भी ठीक से कोडित किया जाता है, एमवीसी कई मायनों में बाधा डालता है और बनाने के लिए परिवर्तनों को कठिन बनाता है। मैं अभी भी तय कर रहा हूं कि क्या ये फायदे इसके लायक हैं।
मैं बड़ी मल्टी-डेवलपर साइटों में एमवीसी का लाभ स्पष्ट रूप से देख सकता हूं।
मुख्य लाभ मुझे यह मिल गया है कि यह परियोजना को अधिक परीक्षण योग्य स्ट्रैचिंग में मजबूर करता है। यह बहुत आसानी से वेबफॉर्म (एमवीपी पैटर्न) के साथ आसानी से किया जा सकता है, लेकिन इसके लिए डेवलपर की समझ होनी चाहिए, कई नहीं।
Webforms और MVC दोनों व्यवहार्य उपकरण हैं, दोनों विभिन्न क्षेत्रों में उत्कृष्ट हैं।
मैं व्यक्तिगत रूप से वेब रूपों का उपयोग करता हूं क्योंकि हम मुख्य रूप से बी 2 बी / एलओबी ऐप विकसित करते हैं। लेकिन हम हमेशा इसे एमवीपी पैटर्न के साथ करते हैं, जिसमें हम अपनी यूनिट परीक्षणों के लिए 95 +% कोड कवरेज प्राप्त कर सकते हैं। यह भी वेबकंट्रोल की संपत्ति के गुणों पर परीक्षण को स्वचालित करने के लिए हमें बदल देता है संपत्ति मूल्य को उदाहरण के माध्यम से उजागर किया जाता है
bool IMyView.IsAdminSectionVisible{
get{return pnlAdmin.Visible;}
get{pnlAdmin.Visible=value;}
}
) मुझे नहीं लगता कि परीक्षण के इस स्तर को MVC में आसानी से प्राप्त किया जा सकता है, मेरे मॉडल को विचलित किए बिना।
अब आप 'नॉन-पोस्ट-बैक कंट्रोल' का उपयोग करने के बारे में बुरा महसूस नहीं करते हैं - और यह अनुमान लगाते हैं कि उन्हें पारंपरिक asp.net वातावरण में कैसे नष्ट किया जाए।
इसका मतलब है कि आधुनिक (उपयोग करने के लिए स्वतंत्र) जावास्क्रिप्ट नियंत्रण इस तरह के इस या इस या इस सब है कि एक वर्ग छेद महसूस में एक दौर खूंटी फिट करने की कोशिश के बिना इस्तेमाल किया जा सकता।
आधुनिक जावास्क्रिप्ट नियंत्रण के साथ-साथ JSON अनुरोधों को MVC का उपयोग करके बहुत आसानी से नियंत्रित किया जा सकता है। वहां हम एक एक्शन से दूसरी एक्शन तक डेटा पोस्ट करने के लिए कई अन्य तंत्रों का उपयोग कर सकते हैं। यही कारण है कि हम वेब रूपों पर MVC पसंद करते हैं। इसके अलावा, हम हल्के वजन पृष्ठों का निर्माण कर सकते हैं।
मेरी निजी राय है कि, ASP.Net MVC का उपयोग करने के लिए सबसे बड़ा डिस-बेनेफिट ...
उन डेवलपर्स के लिए html नरक के CODE BLOCKS
साथ मिलाया जाता है, जो इसे बनाए रखते हैं ...HTML