2012-10-09 21 views
5

मैं हाल ही में एक समूह में शामिल हुआ जो क्लासिक एएसपी वेब एप्लिकेशन का प्रबंधन करता है। यह हमारे समूह की जरूरत के लिए ठीक काम कर रहा है। हालांकि, एएसपी में जाने के लिए, मैं शामिल होने से पहले एक निर्णय लिया गया था। नेट। चूंकि हम ज्यादातर एएसपी डेवलपर्स हैं, इसलिए हम एएसपी नेट में कोड लिखते हैं क्योंकि हम क्लासिक एएसपी (अधिकांश भाग के लिए) में करेंगे। क्या इस एप्लिकेशन/प्रोजेक्ट में एमवीसी पेश करना संभव होगा?क्या एमवीसी ढांचे का उपयोग वेब अनुप्रयोग में किया जा सकता है जो वर्तमान में एएसपी .NET का उपयोग कर रहा है?

धन्यवाद!

उत्तर

2

हां, पारंपरिक वेबफॉर्म प्रोजेक्ट में एमवीसी का उपयोग करना संभव है। मैं कुछ साल पहले MVC 2 के लिए एक बड़ी WebForms परियोजना चले गए, और यहाँ मेरा निष्कर्ष (मैं उन्हें अद्यतन किया है MVC 3 प्रतिबिंबित करने के लिए)

  1. सुनिश्चित करें कि आप MVC के साथ ही, .NET 4.0 इंस्टॉल है कर रहे हैं 3 ढांचे और वीएस एक्सटेंशन।
  2. संदर्भ के रूप में उपयोग करने के लिए एक नई खाली एमवीसी परियोजना बनाएं।
  3. संदर्भ प्रोजेक्ट के लिए डिफ़ॉल्ट web.config को देखें। आप मूल रूप से संदर्भ web.config का उपयोग करना चाहते हैं, और अपनी वर्तमान प्रोजेक्ट से आवश्यक सामग्री में विलय करना चाहते हैं।
  4. संदर्भ global.asax.cs देखें। उपर्युक्त की तरह, आप संदर्भ में परिवर्तनों को अपने वर्तमान एप्लिकेशन के global.asax.cs में मर्ज करना चाहते हैं।
  5. आप अपने वेब परियोजना के लिए निम्न संदर्भ जोड़ने की आवश्यकता होगी:

    System.Web.Abstractions, System.Web.Extensions, System.Web.Helpers, System.Web.Mvc, सिस्टम .Web।रूटिंग

  6. आप ProjectTypeGuids बदलकर वी.एस. एक्सटेंशन सक्षम कर सकते हैं:

    • समाधान Explorer में, इस परियोजना का नाम राइट क्लिक करें और अनलोड परियोजना का चयन करें। फिर प्रोजेक्ट नाम पर दोबारा राइट-क्लिक करें और ProjectName.csproj संपादित करें का चयन करें।
    • ProjectTypeGuids तत्व का पता लगाएं और {E53F8FEA-EAE0-44A6-8774-FFD645390401} जोड़ें।
    • परिवर्तनों को सहेजें, प्रोजेक्ट पर राइट-क्लिक करें, और उसके बाद रीलोड प्रोजेक्ट का चयन करें।
  7. MVC सामग्री के लिए निम्न मानक फ़ोल्डरों जोड़ें:

    • ~/दृश्य
    • ~/दृश्य/साझा
    • ~/नियंत्रकों
    • ~/मॉडल (आपके विचार मॉडल के लिए , वैकल्पिक)
    • ~/सामग्री (सीएसएस और छवियों के लिए, वैकल्पिक)
    • ~/स्क्रिप्ट (जेएस के लिए, वैकल्पिक)

अतिरिक्त नोट्स:

  1. अपने मौजूदा WebForms ऐसे अनाधिकृत उपयोगकर्ताओं को रोकने के रूप में प्राधिकरण के लिए web.config सेटिंग्स पर निर्भर करता है, तो(), यह, MVC कार्यों द्वारा मान्यता प्राप्त होना नहीं करेगा क्योंकि रूटिंग वेबफॉर्म प्रमाणीकरण से पूरी तरह अलग से काम करता है। प्राधिकरण की आवश्यकता के लिए AuthorizeAttribute का उपयोग करें, या कुछ भूमिकाओं या उपयोगकर्ताओं को क्रियाओं को बाधित करें। आप specify global filters भी कर सकते हैं ताकि आपको प्रत्येक कंट्रोलर या एक्शन पर इस विशेषता को लागू करने की आवश्यकता न हो।
  2. 7 से पहले आईआईएस संस्करणों के साथ एमवीसी काम करने के लिए या क्लासिक पाइपलाइन का उपयोग करने वाले एप्लिकेशन पूल के साथ अतिरिक्त विचार हो सकते हैं। एकीकृत पाइपलाइन के साथ आईआईएस 7+ का उपयोग करने पर विचार करें।
  3. ऊपर दिए गए मेरे नोट्स में मुख्य रूप से एमवीसी कामकाजी की बेसलाइन प्राप्त करना शामिल है, जो एएसपीएक्स विचारों का उपयोग करता है। एएसपीएक्स विचार उसी मार्कअप का उपयोग करते हैं जैसे एएसपीएक्स फाइलों का उपयोग आप वेबफॉर्म में करते हैं। आप नए रेजर सिंटैक्स (primer) का भी उपयोग कर सकते हैं, जिसे मैं अत्यधिक अनुशंसा करता हूं। आप एक ही समय में एएसपीएक्स और रेजर व्यू पेज दोनों का उपयोग कर सकते हैं। हालांकि, आप एक एएसपीएक्स मास्टर पेज का उपयोग रेजर व्यू (या इसके विपरीत) पर नहीं कर सकते हैं। इसके अलावा, एमवीसी रेज़र विचारों से पहले एएसपीएक्स विचारों को ढूंढ और उपयोग करेगा, इसलिए यदि आप रेज़र को दृश्य अपग्रेड करते हैं, तो मूल एएसपीएक्स हटाएं। रेज़र विचारों को सक्षम करने के लिए आपको थोड़ा अतिरिक्त काम करने की आवश्यकता होगी। मैं रेजर को सक्षम करने के लिए अपने नोट्स खोजने की कोशिश कर रहा हूं। जब मैं उन्हें ढूंढूं तो मैं अपडेट करूंगा। एक बार जब आप रेजर स्थापित और काम कर लेंगे, तो आप एएसपीएक्स से रेजर को कन्वर्ट करने के लिए this tool by Telerik का उपयोग कर सकते हैं।
  4. Here is a question एसओ पर एक समस्या के बारे में जो मुझे अपग्रेड करते समय था। मैं केवल इसे प्रदान कर रहा हूं क्योंकि इसमें ऊपर बताए गए कुछ बिंदुओं को अधिक विस्तार से शामिल किया गया है। हालांकि, मैं उस समय एमवीसी 2 में अपग्रेड कर रहा था, इसलिए इनमें से कुछ सामान पुराना है।
+0

यह उत्तर रूटिंग का उल्लेख नहीं करता है; मुझे संदेह है कि डिफ़ॉल्ट एमवीसी मार्ग सबसे सामान्य एएसपी.Net पृष्ठों की उपलब्धता में हस्तक्षेप करने जा रहे हैं। –

+0

@ChrisMoschini एमवीसी यह देखने के लिए देखेगा कि अनुरोधित संसाधन भौतिक फ़ाइल से मेल खाता है, और यदि ऐसा है, तो उस फ़ाइल को उसके हैंडलर के अनुसार संसाधित किया जाता है। तो एएसपीएक्स पृष्ठों के संदर्भ में, यह कोई समस्या नहीं है। हालांकि, आपको किसी भी मुद्दे को हल करने की आवश्यकता होगी जहां आपके पास एक यूआरएल है जो एमवीसी के लिए रूट करने योग्य है और एक या अधिक अन्य हैंडलर भी हैं।आपके औसत वेबफॉर्म प्रोजेक्ट के लिए, यह बहुत आम नहीं है, लेकिन संभव है। उदाहरण: कहें कि आपके पास एक डिफ़ॉल्ट दस्तावेज़ है .एएसपीएक्स लेकिन एमवीसी को लेना चाहते हैं। आपको या तो ए की आवश्यकता होगी) डिफ़ॉल्ट दस्तावेज़ को बदलें ताकि एएसएक्सएक्स को अब नहीं माना जा सके या बी) एएसपीएक्स को हटा दें – HackedByChinese

2

संक्षिप्त उत्तर हाँ यह संभव है।

स्कॉट हैनसेलमैन ने this topic पहले लिखा है।

आपकी टीम में कौशल के आधार पर, आपको गति तक पहुंचना मुश्किल हो सकता है - क्लासिक एएसपी में स्वच्छ एमवीसी स्टाइल कोड लिखना संभव है लेकिन ज्यादातर लोग नहीं करते हैं।

1

यह निश्चित रूप से तकनीकी रूप से संभव है। हालांकि, ऐसा लगता है कि यह एक सांस्कृतिक सदमे होगा, क्योंकि एमवीसी क्लासिक एएसपी या एएसपी.नेट वेबफॉर्म की तुलना में काफी अलग काम करता है। मुझे लगता है कि यह करना फायदेमंद होगा - या बस एएसपी.NET वेबफॉर्म के साथ चिपके रहें यदि यह अधिक प्राकृतिक लगता है। लेकिन अगर आपने अभी तक वेबफॉर्म के लिए पूरी तरह से प्रतिबद्ध नहीं किया है, तो एमवीसी आईएमओ में जाने के लिए उतना आसान लगता है।

1

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

यहां एकमात्र असली गॉचाचा है जिसमें मुझे याद रखना याद हो सकता है: वेबफॉर्म पूरे पृष्ठ को बड़े <form> टैग में लगाकर काम करता है। चूंकि एचटीएमएल आपको <form> टैग नेस्टेड करने की अनुमति नहीं देता है, इसलिए आप आमतौर पर वेबफॉर्म पेज के अंदर एमवीसी फॉर्म का उपयोग नहीं कर सकते हैं। या तो अपने वेबफॉर्म पेजों को अपनी एमवीसी सामग्री से अलग रखें, एमवीसी सामग्री में एचटीएमएल फॉर्मों का उपयोग करने से बचें जो वेबफॉर्म पेज पर दिखाई दे सकते हैं, या वेबफॉर्म डीओएम क्षेत्र के बाहर बनाए गए फॉर्मों के लिए पॉपअप संवाद का उपयोग करें।