यह बहुत सारे सवालों के साथ एक बासी सवाल है लेकिन किसी के पास ऐसा कोई जवाब नहीं था जिसकी मुझे उम्मीद थी कि मैं सूचीबद्ध होऊंगा।
संक्षिप्त उत्तर है:
- यदि आप ASP.NET प्लेटफॉर्म के लिए आधुनिक प्रोग्रामिंग कन्वेंशन और उद्योग से जुड़े पैटर्न के साथ वेब एप्लिकेशन बनाने का इरादा रखते हैं, तो ASP.NET MVC का उपयोग करें। नीचे की ओर आपको यह जानने की उम्मीद होगी कि HTML और क्लाइंट-साइड संसाधन (जावास्क्रिप्ट, सीएसएस) कैसे काम करते हैं और साथ ही साथ एमवीसी प्रोग्रामिंग मानसिकता पर रैंप अप करते हैं, जिसमें एक सीखने की अवस्था होती है, लेकिन एक बार अचानक पहुंच जाता है।
- ASP.NET वेब फॉर्म का उपयोग करें यदि आप GUI -centric, RAD (रैपिड एप्लिकेशन डेवलपमेंट) का उपयोग करना चाहते हैं , तो किसी चीज़ को बहुत तेज़ी से प्रोटोटाइप करने के लिए ड्रैग-एंड-ड्रॉप दृष्टिकोण, यानी पुश-बटन / डेटा ग्रिड व्यवहार के भीतर वायर्ड 15 मिनट, और समाधान डेवलपर्स द्वारा समर्थित कुछ होने का इरादा नहीं है। या, उपयोग ASP.NET वेब प्रपत्र आप में एक पृष्ठभूमि है, तो जीयूआई या Windows Forms विकास और आप वेब के लिए अपने ज्ञान का हस्तांतरण करने के लिए इच्छा।
लेकिन इसे ठीक से देखने के लिए, आपको प्रत्येक के इतिहास को समझना होगा।
ASP.NET वेब फॉर्म उन लोगों के लिए Microsoft का जवाब था, जो विजुअल बेसिक 6 एक्टिवएक्स कंट्रोल, सर्वर पर VB6 DLLs और ASP क्लासिक का उपयोग करके डायनामिक वेब एप्लिकेशन का निर्माण कर रहे थे। उस समय, इन Microsoft उपकरणों का उपयोग करके वेब विकास एक वास्तविक गड़बड़ था। .NET फ्रेमवर्क की संपूर्णता के साथ, जो कि Microsoft का उत्पादन अनिवार्य रूप से ड्रॉइंग बोर्ड पर वापस जा रहा था कि विंडोज स्टैक पर उत्पादक व्यावसायिक प्रोग्रामिंग कैसे करें, ASP.NET वेब फॉर्म अपने दिन में अद्भुत और सुंदर था।
संपूर्ण दृष्टिकोण डेवलपर्स को विंडोज़ एप्लिकेशन के विकास के समान कुछ के दोनों दुनिया के सर्वश्रेष्ठ देने के लिए था, लेकिन इंटरनेट सेवाओं की शक्ति के साथ। विचार यह था कि, जैसे कि VB6 / WinForms "फ़ॉर्म" (एक विंडो) के साथ, वैसे ही एक वेब पेज एक रूप है (बस एक खिड़की की तरह, देखें) , और उस रूप में आप लेबल, ड्रॉप-डाउन ड्रॉप कर सकते हैं। डेटा ग्रिड, बटन और अन्य चीजें जो VB / WinForms GUI डेवलपर्स के आदी थे।
एक बटन बनाने के लिए कुछ करें, इसे खींचने और छोड़ने के बाद, आप इसे सिर्फ डिजाइनर पर डबल-क्लिक करें और बूम में आप कोड संपादक में हैं, उस फॉर्म को बताते हुए कि क्या करना है जब "क्लिक" इवेंट होता है। यह बिल्कुल वैसा ही था जैसे विंडोज GUI डेवलपर्स ने VB6 के GUI टूलिंग और प्रतिस्पर्धी टूल का उपयोग करके सॉफ्टवेयर बनाया था , सिवाय अब कोड सर्वर पर निष्पादित हो रहा है! वाह!
यह 2002 की तकनीक थी। राड विकास के लिए इंटरनेट-सक्षम जीयूआई समाधानों के जवाब के रूप में अपने समय में अद्भुत और सुंदर , इसने सॉफ्टवेयर डेवलपर्स की एक गड़बड़ दुनिया के लिए शक्ति की भावना लाई जिसमें व्यावसायिक उद्देश्य थे जिन्हें उन्हें पूरा करने की आवश्यकता थी।
दुर्भाग्य से, यह प्रोग्रामिंग मॉडल विंडोज जीयूआई प्रोग्रामिंग के रूपक पर इतना जोर देता है कि वह इसके साथ अपने आवश्यक कार्यान्वयन विवरणों का भार वहन करता है, घटना जीवन चक्रों को समायोजित करने के लिए आवश्यक सभी संलग्न सामान और सरल एचटीएमएल के बदसूरत विवरणों को दूर करने के लिए। स्क्रिप्ट जो इन ड्रैग-एंड-ड्रॉप घटकों और नियंत्रणों को आउटपुट करेगी। और दिन के अंत में, वास्तविक अनुप्रयोगों का समर्थन करने वाले डेवलपर्स को अनिवार्य रूप से इन घटकों में गहरी खुदाई करनी थी या अपना स्वयं का लिखना था, और इसके परिणामस्वरूप वे इस बुनियादी ढांचे के साथ लड़ाई लड़ेंगे, जो कि गड्ढों के ढेर, पीछे के बाल, और बालों को खींचकर छोड़ देंगे, और आँसू।
बैक अप लें। अपने हाथ धो लो। आइए व्यवसाय की समस्या पर फिर से गौर करें। हमारे व्यावसायिक उद्देश्य क्या हैं?
हमें वेब एप्लिकेशन बनाने और प्रबंधित करने की आवश्यकता है । हमारी अड़चन यह है कि हमारे पास वर्ल्ड वाइड वेब है, जो HTTP, HTML, Javascript, और CSS पर बैठता है, और सर्वर पर हमारे पास व्यापार नियम, डेटाबेस और कुछ बड़ी प्रोग्रामिंग भाषाएं (जैसे C #) हैं। क्या वास्तव में हमें अपनी विकास पद्धति को चलाने के लिए इस विंडोज GUI रूपक की आवश्यकता है? हम सिर्फ आवेदन की समस्याओं पर ध्यान केंद्रित क्यों नहीं कर सकते हैं और जीयूआई रूपकों के साथ दूर क्यों कर सकते हैं?
यह वह जगह है जहाँ ASP.NET MVC आता है। यह उन डेवलपर्स के विद्रोह से शुरू हुआ था, जिन्होंने खुद को "Alt.Net" कहा था, जो उचित और शुद्ध सॉफ्टवेयर विकास सिद्धांतों पर वापस जाना चाहते थे। कोई और अधिक उपद्रव और उपद्रव नहीं है, बस व्यावसायिक उद्देश्यों और सॉफ्टवेयर सर्वोत्तम प्रथाओं पर ध्यान केंद्रित करें।
इस मामले में वास्तव में इसका क्या अनुवाद है:
- चिंताओं का पृथक्करण । उदाहरण के लिए, एक डेटा घटक को यह जानने की आवश्यकता नहीं है कि उसका डेटा कैसे प्रस्तुत किया जा रहा है, और न ही मार्कअप को डेटाबेस कनेक्शन कॉन्फ़िगरेशन विवरण के साथ संलग्न किया जाना चाहिए, और इस तरह एक डेवलपर संपादन और जब चिंता के अपने क्षेत्र पर ध्यान केंद्रित कर सकता है परीक्षण कोड।
- HTML और संबंधित संसाधनों की किटी ग्रिट्टी के संपर्क में एक्सपोज़र और पूर्ण समर्थन । वेब फॉर्म्स में, HTML को दूर रखा गया है, डेवलपर्स उसी के साथ उपद्रव करने से हतोत्साहित होते हैं। ASP.NET MVC में, डेवलपर्स को उन विवरणों को प्रबंधित करने के लिए प्रोत्साहित किया जाता है; वास्तव में यह एक आवश्यकता है। यहाँ लाभ यह है कि डेवलपर एचटीएमएल, सीएसएस और स्क्रिप्ट के स्वच्छ शब्दार्थ की सराहना करने के लिए फिर से सीख सकता है और इसके खिलाफ काम कर सकता है।
- व्यावसायिक वस्तुओं की परख । प्रोग्रामर यूनिट परीक्षण के लिए नियंत्रकों और मॉडल बहुत बेहतर हैं, ताकि कार्यान्वयन को व्यावसायिक उद्देश्यों को पूरा करने के लिए मान्य किया जा सके, और परिवर्तनों को सत्यापित किया जा सके कि वे टूटेंगे नहीं। वेब फॉर्म के साथ यह परीक्षण करना मुश्किल था क्योंकि घटकों को व्यक्तिगत रूप से परीक्षण करने के लिए डिज़ाइन नहीं किया गया था और संपूर्ण विकास आउटपुट पृष्ठ रूपों और उनके घटना जीवनचक्र के साथ व्यापार तर्क और प्रस्तुति तर्क की गहराई से परस्पर जुड़े हुए थे।
ध्यान दें कि HTML पहले से ही एक उच्च-स्तरीय मार्कअप भाषा है, जैसा कि जावास्क्रिप्ट एक उच्च-स्तरीय प्रोग्रामिंग भाषा है। पूरी कहानी अलग होती अगर हम विधानसभा की भाषा और सी के साथ काम कर रहे होते।
# 2 पर विस्तार करते हुए, ASP.NET MVC का एक अन्य उद्देश्य डेवलपर्स को उनके समाधानों के 'दृश्य' भाग के सामने के अंत के विवरण को व्यवस्थित करने में सक्षम बनाना और उस समृद्ध नींव का लाभ उठाना है जो बाकी उद्योग ने बनाया है। फ्रंट-एंड क्लाइंट प्लेटफ़ॉर्म।
आप पाएंगे कि ASP.NET MVC डेवलपर्स घर पर समृद्ध जावास्क्रिप्ट पुस्तकालयों और क्लाइंट साइड टेम्प्लेटिंग तकनीकों का उपयोग सर्वर-साइड आर्किटेक्चर के साथ लड़ने के बिना महसूस करते हैं। यह मूल रूप से ASP.NET वेब फॉर्म्स के मामले में नहीं था, क्योंकि वेब फॉर्म नहीं चाहते हैं कि आप HTML या स्क्रिप्ट को बिल्कुल भी देखें, सिवाय इसके कि आपको वास्तव में किस मामले में सावधान रहना है, यह बेहोश करने के लिए नहीं है। दिल का।