आप वेब प्रपत्रों पर MVC का उपयोग क्यों करेंगे?


11

हाल ही में एक आर्किटेक्ट ने हमारी कंपनी को रोल्स-रॉयस सॉल्यूशन (MVC) की पेशकश के रूप में वर्णित किया, जब उसे एक टोयोटा (वेब ​​फॉर्म) की आवश्यकता थी।

मैं यह जानने के लिए उत्सुक हूं कि आप एक वास्तुशिल्प विकल्प के रूप में वेब बनाम एमवीसी के बारे में क्या सोचते हैं।


11
मुझे लगता है कि आर्किटेक्ट को ASP.NET MVC की बहुत अच्छी समझ नहीं है।
एडम क्रॉसलैंड

3
@ क्रिस वेबफॉर्म MVC का सबसेट नहीं है। दोनों पूरी तरह से एक दूसरे के स्वतंत्र रूप से काम करते हैं। इसके अलावा webforms पुराना है और शायद ज्यादा लंबे समय तक बनाए नहीं रखा जा रहा है। इसके अलावा, फ्रंट-एंड वेब / यूआई देव के लिए यह एंटी-क्राइस्ट है।
एरिक रेपेने

जवाबों:


20

रोल्स रॉयस / टोयोटा सादृश्य बहुत त्रुटिपूर्ण और भ्रामक है। एक (ASP.NET MVC) केवल दूसरे (ASP.NET WebForms) का कट्टर या अधिक महंगा संस्करण नहीं है। वे ASP.NET का उपयोग करके वेब अनुप्रयोगों के निर्माण के लिए काफी भिन्न दृष्टिकोण हैं।

मेरे लिए, MVC और WebForms के बीच सबसे बड़ा वास्तुशिल्प अंतर यह है कि वे वेब के स्टेटलेस वातावरण के साथ कैसे काम करते हैं: WebForms वेब प्रोग्रामिंग की स्टेटलेस प्रकृति को छिपाने वाले अमूर्त का एक सेट बनाने के लिए कड़ी मेहनत करते हैं, जबकि MVC स्टेटलेस वातावरण को बनाता है और इसके साथ काम करता है यह।

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


1
उन भद्दी गालियाँ बहुत समस्याग्रस्त हैं। Asp .Net MVC सीखना आपकी आँखों को http प्रोटोकॉल पर खोलता है
Michal Franc

10

पुराना सवाल है, लेकिन यह अधिक विस्तृत जवाब देने के योग्य है, अगर वास्तव में इस पर कोई दुविधा है।

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

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

सीएसएस, जावास्क्रिप्ट, एचटीएमएल, एक्सएचआर के बारे में सब कुछ जानने वाले को लेने और उन्हें पूरी तरह से बेकार बना देने के रूप में कुछ भी इतना व्यर्थ नहीं है कि उन्हें एक ढांचे के साथ रास्ते के हर चरण को अवरुद्ध करके पूरी तरह से बेकार कर दिया जाए ...

  • आपको स्क्रिप्ट पर निर्भरता से पंगा लेने से रोकने के लिए सिर के टैग में सभी 'अनावश्यक' स्क्रिप्ट टैग को हटा देता है। (बेहतर है कि एक 'स्क्रिप्ट मैनेजर' को आपके लिए संभाल कर रखा जाए) दी गई, कोई भी आजकल उन्हें वहाँ नहीं रखता है अगर वे जानते हैं कि वे क्या कर रहे हैं, लेकिन यह सिर्फ गड़बड़ है।

  • जोर देकर कहते हैं कि आप सभी HTML को एक ginormous फॉर्म टैग में लपेटते हैं। HTML प्रपत्रों के अंदर प्रपत्रों की अनुमति नहीं देता है ताकि आप वेबफ़ॉर्म तरीके या किसी भी तरह से फ़ॉर्म न करें।

  • वास्तव में यूआई घटनाओं को सर्वर पर संदेश भेजने के लिए बातचीत करके और फिर सर्वर द्वारा प्रतिक्रिया देने पर प्रतिक्रिया करने के लिए यूआई घटनाओं पर प्रतिक्रिया करने के लिए क्या उबालना चाहिए, इसके लिए एक 18-चरण "जीवन-चक्र" की तरह बनाता है। कचरे के एक बड़े विशाल ढेर के साथ उस प्रक्रिया को पूरा करने की आवश्यकता कभी नहीं हुई (और निष्पक्ष होने के लिए, एमएस एकमात्र ऐसा व्यक्ति नहीं है जिसने ऐसा करने की कोशिश की है)।

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

तो नहीं, रोल्स-रॉयस बनाम टोयोटा, पूरी तरह से अनुचित है। मैं और अधिक, एक पूरी तरह से उचित हुंडई कहूंगा कि आप एक Microsoft इंजीनियर बनाम पिंटो के लिए बहुत अधिक भुगतान करते हैं एक ऑनबोर्ड प्रणाली के साथ जो स्वचालित रूप से तेज 90 डिग्री मोड़ देता है जब यह पता चलता है कि आपने Microsoft के अलावा किसी और से गैस या तेल खरीदा है और इसका पता लगाया गया है में पटकने के लिए सुविधाजनक दीवार। आत्म-ब्रांड-वफादार ड्राइवर के लिए एक आदर्श कार, जो वेब के बारे में कुछ भी नहीं जानता है और माइक्रोसॉफ्ट के लिए जीवन भर की वफादारी की शपथ लेना चाहता है।

सभी .NET MVC वास्तव में सरल और उचित है, और यह वेब के ऊपर थप्पड़ मारने के लिए अपनी स्वयं की परत को सुदृढ़ नहीं करता है। यह सिर्फ आपके लिए कुछ बॉयलरप्लेट को बाहर निकालने में मदद करने के लिए काम करता है। बेहतर / सस्ता / फ्री-एर फ्रेमवर्क उपलब्ध है लेकिन अगर आप पहले से ही अपने आप को .NET चीज़ में लॉक कर लेते हैं, तो आप बहुत बुरा कर सकते हैं।

लेकिन गंभीरता से, webforms से @ $ दूर रहें। यह अब लगभग मर चुका है। जाने दो। अपने ग्राहकों को बताएं कि आप इसे तीन गुना पैसे के लिए करेंगे, अगर वे आपको एक विशेष और आकर्षक बाय-द-घंटे समर्थन अनुबंध का वादा करते हैं, जब वे वास्तव में कुछ नया या अलग करना चाहते हैं या जब बकवास टूटना शुरू हो जाता है क्योंकि एमएस भी नहीं कर सकता था 10,000 रेखा ajax.js फ़ाइल के उस behemoth में जुड़ने को जारी रखने के लिए परेशान हों, जो वे अपने DLL गधे से बाहर खींचते हैं जहां आप इसे छू नहीं सकते हैं।


हाय एरिक तुम से प्यार करता था, तो तुम मेरे upvot मिला। बस HTML 5 और CSS सीखना इसलिए आपकी पोस्ट बहुत जानकारीपूर्ण थी।
चाड

+1 बहुत अच्छा जवाब! मैं वर्षों से एमवीसी से बच रहा हूं क्योंकि मुझे लगा कि यह वेब-रूपों के लिए एक अधिक जटिल दृष्टिकोण होगा। वास्तविकता में लगता है कि यह वेब-रूपों के साथ जो मैं करने की कोशिश करता हूं वह आसान होगा (जैसे मैं हमेशा स्क्रिप्ट प्रबंधक की तरह Microsoft बीएस के सभी से बचने की कोशिश करता हूं)।
ड्रू चापिन

6

ASP.NET MVC समाधान किसी WebForms समाधान की तुलना में अधिक जटिल नहीं है। व्यक्तिगत रूप से, मैं ASP.NET MVC वास्तव में WebForms की तुलना में बहुत सरल हो, और यह निश्चित रूप से स्वाभाविक रूप से क्लीनर लगता है।

मेरे अनुभव से, बहुत सारे MVC फ्रेमवर्क (ASP.NET, रेल्स, कोडआईग्निटर, इत्यादि) में बहुत अधिक कोर कार्यक्षमता और कन्वेंशन हैं। WebForms वेब परिप्रेक्ष्य से वास्तव में अजीब बतख है। मेरा अनुमान है कि अधिकांश वेब प्रोग्रामर WebForms की तुलना में ASP.NET MVC लेने में बहुत तेज होंगे।


5

ASP.NET MFC WebForms पर ASP.NET MVC का उपयोग करने का शीर्ष कारण परीक्षणनीयता है। यकीन है कि आप WebForms का एक प्रकार का परीक्षण कर सकते हैं लेकिन इसके लिए नकली रूपरेखा और बहुत दर्द की आवश्यकता होती है। दूसरा कारण एमवीसी है जिससे चिंताओं को अलग करना थोड़ा आसान हो जाता है। यह कोड पुन: उपयोग का एक बड़ा सौदा प्रदान कर सकता है और आपके कोड को शिथिल रूप से युग्मित कर सकता है। इसका मतलब यह नहीं है कि एमवीपी जैसे पैटर्न के साथ ASP.NET में ऐसा करना असंभव है।

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

जहाँ तक प्रदर्शन की बात है, क्या किसी के पास एक रास्ता है या कोई अन्य तकनीक जो "तेज़" है?

मुझे नहीं लगता कि एक दूसरे से बेहतर है। मैं वास्तव में एमवीसी ढांचे को पसंद करता हूं और इसे बड़ी सफलता के साथ इस्तेमाल किया है लेकिन मैं हमेशा सुनिश्चित करता हूं कि मैं उस तकनीक का चयन करूं जो परियोजना से मेल खाती हो।

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