ASP.NET MVC 3: नवाचारों का एक विस्तृत अवलोकन

छवि

ASP.NET MVC 2 ढांचे की अंतिम रिलीज के चार महीने से अधिक समय बाद, विकास टीम ASP.NET MVC 3 के पहले प्रारंभिक संस्करण को प्रस्तुत करने की कृपा कर रही है। घोषणा और डाउनलोड लिंक यहां पाया जा सकता है

यह आलेख उन नवाचारों और परिवर्तनों का अवलोकन देगा जो फ्रेमवर्क के नए संस्करण में हुए हैं।

.NET फ्रेमवर्क 4.0 के लिए संगतता और समर्थन


पिछले संस्करण के विपरीत, ASP.NET MVC 3 केवल .NET फ्रेमवर्क के चौथे संस्करण का समर्थन करता है। इसके अलावा, विज़ुअल स्टूडियो में एकीकरण के लिए डेवलपर घटक केवल विज़ुअल स्टूडियो 2010 और विज़ुअल वेब डेवलपर एक्सप्रेस 2010 के लिए समर्थित हैं।

ASP.NET MVC 3 फ्रेमवर्क ASP.NET MVC 2 के साथ एक साथ स्थापित किया जा सकता है, उन्हें एक दूसरे से अलग से इस्तेमाल किया जा सकता है।

ASP.NET MVC 3 के पिछले संस्करण से अपग्रेड करना


फ्रेमवर्क के पिछले संस्करणों से एक नई प्रारंभिक तक की परियोजनाओं को अद्यतन करने का सबसे आसान तरीका एक नया एमवीसी 3 प्रोजेक्ट बनाना और पुराने प्रोजेक्ट के सभी घटकों को इसमें स्थानांतरित करना है: नियंत्रक, विचार, सहायक फाइलें।

ASP.NET MVC 3 पूर्वावलोकन 1 के नए संस्करण में ASP.NET MVC 2 पर आधारित परियोजनाओं को मैन्युअल रूप से अपग्रेड करने के लिए, आपको निम्नलिखित कार्य करने चाहिए:

ASP.NET MVC 3 पूर्वावलोकन 1 में नवाचार


फ्रेमवर्क के नए संस्करण में कई महत्वपूर्ण नवाचार हैं।

रेज़र व्यू इंजन सपोर्ट


इस संस्करण से शुरू होकर, ASP.NET MVC नए रेजर व्यू मार्कअप सिंटैक्स के लिए समर्थन का परिचय देता है। बहुत पहले नहीं, रेजर को वेबमार्टिक्स वेब डेवलपमेंट टूल प्रोजेक्ट में विचारों के लिए मूल वाक्यविन्यास के रूप में पेश किया गया था। रेजर अब MVC अनुप्रयोगों को विकसित करने के लिए उपलब्ध है।

रेजर HTML कोड के साथ काम करने के लिए एक सिंटैक्स अनुकूलित है। ASP.NET वेब फॉर्म इंजन नियंत्रण पर बहुत अधिक ध्यान केंद्रित करता है, और इसका कोड HTML कोड के बीच अतिभारित दिखता है। दूसरी ओर, रेजर, एक अत्यंत अनुकूलित समाधान प्रदान करता है जो HTML कोड में प्रस्तुति तर्क को सफलतापूर्वक एकीकृत करेगा।

एक उदाहरण पर विचार करें। नीचे पुराने प्रस्तुति इंजन (बाएं) और नए रेजर इंजन (दाएं) का उपयोग करके बनाया गया एक रूप है।

imageimage

रेजर के बीच मुख्य अंतर जो आपकी आंख को पकड़ता है वह "<%%>" सेट खोलने और बंद करने की कमी है। वास्तव में, यहां तक ​​कि @ यूज़िंग ग्रुपिंग सिंटैक्स में समापन तत्व शामिल नहीं होते हैं और केवल "}} चरित्र द्वारा दर्शाया जाता है। WebForms संस्करण में "<%}%>" लिखने की आवश्यकता के साथ इसकी तुलना करें और आप समझेंगे कि रेजर विकास का मुख्य फोकस क्या है - कोड और इसकी संक्षिप्तता को कम करके डेवलपर की उत्पादकता।

विशेष रूप से, कोड में शाखाएँ बनाते समय रेजर की सुविधा प्रकट होती है, उदाहरण के लिए, वेबफार्म और रेजर में कुछ कोड जैसा दिखता है:

imageimage[40]

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

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

image

एक ही कोड, लेकिन रेजर शैली में, नीचे प्रस्तुत किया गया है:

image

आप स्कॉट गुथ्री के लेख के इस अनुवाद से रेजर प्रस्तुत करने वाले इंजन के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

विजुअल स्टूडियो में कई प्रस्तुति इंजन के लिए समर्थन


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

clip_image001

दृश्य और ViewModel के गतिशील गुण


चूंकि MVC3 केवल .NET 4.0 का समर्थन करता है, इसलिए फ्रेमवर्क डेवलपर्स ASP.NET MVC में .NET के नए संस्करण का लाभ उठाने में सक्षम थे।

इन लाभों में से एक नए गतिशील प्रकारों का समर्थन है। MVC 3 में, परिचित ViewData संपत्ति को View और ViewModel के दो गतिशील कार्यान्वयन के रूप में दर्शाया गया है। यह आपको निम्नलिखित कोड के बजाय अनुमति देता है:

ViewData ["शीर्षक"] = "शीर्षक"; </ em
ViewData ["संदेश"] = "हैलो वर्ल्ड!";


अलग-अलग मानों को आरंभिक करें:

ViewModel.Title = "शीर्षक";
ViewModel.Message = "हैलो वर्ल्ड!";

ऑब्जेक्ट के लिए तुरन्त एक्सटेंशन बनाने की क्षमता .NET 4.0 में एक गतिशील प्रकार की संपत्ति है। इस मामले में दृश्य के संदर्भ में खेतों तक पहुंच को सरल बनाया जाएगा:

<h2> View.Title </ h2>
<p> View.Message </ p>

निर्भरता इंजेक्शन सहायता


एमवीसी 3 में, डेवलपर्स ने फ्रेमवर्क के विस्तार की संभावनाओं को बढ़ाया और अपने स्वयं के कार्यान्वयन का सहारा लेने की आवश्यकता के बिना बॉक्स से कोड को बाहर करने के लिए समर्थन जोड़ा।

ASP.NET MVC 3 पूर्वावलोकन 1 निम्न स्थानों में इंजेक्ट करने की क्षमता जोड़ता है:एक इंजेक्शन बनाने के लिए, डेवलपर को IServiceLocator इंटरफ़ेस का कार्यान्वयन निर्धारित करना होगा:

छवि

उसके बाद, डेवलपर वैश्विक स्थिर वर्ग का उपयोग करके एक नया उदाहरण दर्ज करता है, जिसे निम्नानुसार परिभाषित किया गया है:



डेवलपर IServiceLocator का एक नया कार्यान्वयन सेट करने के लिए SetCurrent विधि को कॉल करता है।

एक नया कार्यान्वयन जोड़ने के बाद, ASP.NET MVC 3 इंजन इसका उपयोग निम्नलिखित उद्देश्यों के लिए करेगा:ASP.NET MVC 3 के निम्नलिखित संस्करण अतिरिक्त कोड इंजेक्शन क्षमताएं प्रदान करेंगे:निम्नलिखित बदलाव मानक ASP.NET MVC तंत्र के व्यवहार में कोड इंजेक्शन समर्थन की शुरूआत के लिए किए गए थे:

वैश्विक फिल्टर


MVC 3 एक वैश्विक फ़िल्टर तंत्र जोड़ता है जो आपको उन फ़िल्टर को परिभाषित करने की अनुमति देता है जो हर बार किसी भी नियंत्रक के कार्यों को बुलाया जाता है। फ़िल्टर जोड़ने के लिए, वैश्विक स्थिर वर्ग GlobalFilters का उपयोग किया जाता है :

GlobalFilters.Filters.Add (नई MyActionFilter ());

आप नए IFilterProvider इंटरफ़ेस के लिए एक इंजेक्शन बनाकर वैश्विक फ़िल्टर तंत्र को ओवरराइड कर सकते हैं। यह आपको वैश्विक फ़िल्टर निष्पादित करने के लिए अपना तर्क बनाने की अनुमति देगा।

JsonValueProviderFactory मूल्य प्रदाता


नया मूल्य प्रदाता आपके कार्यों को JSON प्रारूप में पैरामीटर सेट के साथ अनुरोध प्राप्त करने और उन्हें कार्रवाई विधि के मापदंडों पर मैप करने की अनुमति देगा। पहले, इस कार्यक्षमता को ASP.NET MVC फ्यूचर्स लाइब्रेरी में होस्ट किया गया था।

उदाहरण के लिए, यदि MIME प्रकार के एप्लिकेशन / json के साथ POST अनुरोध में मान होता है:

"" ProductName ":" मिल्क "," कॉस्ट ":" 12.0 "}

फिर, JsonValueProviderFactory प्रदाता का उपयोग करके , ये मान स्वचालित रूप से निम्न क्रिया में ProductModel प्रकार के साथ पैरामीटर को असाइन किए जाते हैं:

[HttpPost]
सार्वजनिक ActionResult SaveProduct (ProductModel productModel)
{
...
}

प्रकार ProductModel के रूप में घोषित किया गया है

सार्वजनिक वर्ग ProductModel
{
publi स्ट्रिंग ProductName {प्राप्त; सेट ;;
सार्वजनिक स्ट्रिंग लागत {प्राप्त; सेट;}
}

.NET 4.0 सत्यापन विशेषता और IValidatableObject के लिए समर्थन


ValidationAttribute वर्ग .NET 4.0 में अद्यतन किया गया था और इस प्रकार ValidationContext के पैरामीटर के साथ नए अतिभारित IsValid विधि के साथ विस्तार किया गया। यह पैरामीटर, नए गुण मान के अलावा, सत्यापन संदर्भ और सत्यापन ऑब्जेक्ट का एक उदाहरण है। यह आपको न केवल वर्तमान संपत्ति की जांच करने की अनुमति देगा, बल्कि ऑब्जेक्ट के अन्य गुण भी और उनके मूल्यों के आधार पर मान्य करेगा।

image

ऊपर दिया गया उदाहरण सत्यापन के संदर्भ में पारित किसी वस्तु के दो गुणों की तुलना दर्शाता है।

इसके अलावा, .NET 4.0 में एक नया IValiditableObject इंटरफ़ेस जोड़ा गया है , जो आपको अपने मॉडल के वर्ग स्तर पर सत्यापन तर्क को परिभाषित करने की अनुमति देता है।

image

मॉडल के ऊपर परिभाषित आईवीडबलिटेबल ऑबजेक्ट इंटरफेस को अपने सत्यापन के लिए लागू करता है। MVC 3 इस इंटरफ़ेस का समर्थन करता है और इसके आधार पर मॉडल को मान्य करता है।

इंटरफ़ेस IClientValidatable


इस नए इंटरफ़ेस के रूप में घोषित किया गया है

image

यह ग्राहक सत्यापन का समर्थन करने वाली जानकारी के साथ तीसरे पक्ष के सत्यापन ढांचे को प्रदान करने के लिए डिज़ाइन किया गया है।

.NET 4 मेटाडेटा विशेषताओं के लिए समर्थन


MVC 3 नई मेटाडेटा विशेषताओं का समर्थन करता है जो .NET 4 में पेश किए गए थे। उदाहरण के लिए, DisplayAttribute। MVC 3 में वास्तव में उपयोग की जाने वाली नई विशेषताओं की एक पूरी सूची अभी तक उपलब्ध नहीं है, इस मुद्दे पर कोई जानकारी नहीं है, और परियोजना के लिए स्रोत कोड अभी तक उपलब्ध नहीं हैं।

IMetadataAware


नया इंटरफ़ेस के रूप में परिभाषित किया गया है

image

यह निर्धारित करने में सक्षम है कि जब मॉडल के लिए मेटाडेटा बनाया गया था और उस क्षण में अतिरिक्त कार्य करने में सक्षम होने का इरादा था। इस इंटरफ़ेस का उपयोग एसोसिएटेडमैडेटाटा पोप्रोइडर से विरासत में मिली कक्षाओं द्वारा किया जाता है, उदाहरण के लिए, DataAnnotations मेटाडेटा वर्ग, DataAnnotationsModelMetadataProvider।

नए प्रकार के एक्शन परिणाम


एमवीसी 3 ने एक्शन परिणाम लौटाने के लिए कई नए प्रकार पेश किए।

HttpNotFoundResult

एक साधारण क्रिया परिणाम प्रकार जो एक परिणाम देता है यह दर्शाता है कि अनुरोधित संसाधन नहीं मिला (HTTP 404)। नियंत्रकों में एक नया सहायक विधि शामिल है, HttpNotFound (), जो HttpNotFoundResult प्रकार लौटाता है :

image

HttpStatusCodeResult

नए वर्ग के रूप में घोषित

image

HttpStatusCodeResult वर्ग को एक क्रिया के परिणामस्वरूप एक मनमाना HTTP कोड वापस करने के लिए डिज़ाइन किया गया है।

जैसा कि आप देख सकते हैं, इसमें दो कंस्ट्रक्टर शामिल हैं जो HTTP कोड के डिजिटल मूल्य को स्वीकार करते हैं और दूसरा परिणाम के विवरण के साथ एक अतिरिक्त लाइन लेता है।

लगातार अनुप्रेषित

MVC3 एक स्थायी रीडायरेक्ट (HTTP 301) के रूप में एक्शन परिणाम लौटाने के लिए समर्थन जोड़ता है। यह निम्नलिखित नए नियंत्रक तरीकों का उपयोग करके किया जा सकता है:

MVC2 के साथ असंगत परिवर्तन


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

ज्ञात मुद्दे


इस रिलीज़ में कई समस्याएँ हैं जिन्हें भविष्य के रिलीज़ में संबोधित किया जाएगा:

निष्कर्ष


पहले प्रारंभिक रिलीज के परिणामों के अनुसार, हम आत्मविश्वास से कह सकते हैं कि ASP.NET MVC 3 का नया संस्करण बहुत सारी नई सुविधाएँ लाएगा। निरंतर अध्ययन के लिए कार्यशीलता पहले से ही उपलब्ध है और मुझे लगता है कि भविष्य के रिलीज के साथ ही नई सुविधाओं की संख्या में वृद्धि होगी।

इसीलिए, नई कार्यक्षमता का अध्ययन और परीक्षण करने के लिए, प्रारंभिक संस्करणों को भागों में जारी किया जाता है। मैं सभी ASP.NET MVC डेवलपर्स से आग्रह करता हूं कि MVC3 पूर्वावलोकन 1 रिलीज़ पर पूरा ध्यान दें और अपनी नई सुविधाओं की खोज के लिए अपना समय समर्पित करें।

Source: https://habr.com/ru/post/In100380/


All Articles