2010-08-20 9 views
10

मैं सामान्य रूप से प्रोग्रामिंग के लिए काफी नया हूं (वास्तव में केवल 2 1/2 साल पहले शुरू हुआ) और मैं यह तय करने की कोशिश कर रहा हूं कि मैं जिस वेब ऐप पर जा रहा हूं उससे संपर्क करने का सबसे अच्छा तरीका क्या है काम। काम पर एक वरिष्ठ डेवलपर मुझे एमवीसी में प्रवेश करने के लिए प्रोत्साहित कर रहा है और इस विषय पर ब्लॉग, स्रोत कोड और अन्य सामग्री पर डालने के 24 घंटों के बाद मुझे समझना शुरू हो रहा है कि मैं इसका उपयोग क्यों करना चाहता हूं।एमवीसी दर्शन वेबफॉर्म पर लागू

उसी समय, हमारी कंपनी के मौजूदा ऐप्स वेबफॉर्म के रूप में लिखे गए हैं, इसलिए मैं अपने एप बनाने के लिए वास्तविक एएसपी.नेट एमवीसी ढांचे का उपयोग करने के रूप में कठोर कुछ नहीं करना चाहता (क्या यह वास्तव में कठिन होगा ?)।

मुझे वास्तव में यह जानना अच्छा लगेगा कि यह वेबफॉर्म करने के लिए व्यावहारिक या संभव होगा, लेकिन फिर भी चिंताओं को अलग करने के एमवीसी दर्शन का पालन करें। क्या मैं वास्तव में पहले से ही जटिल .aspx + codebehind पृष्ठ पर एक अनावश्यक परत जोड़ रहा हूं?

ब्लॉगोस्फीयर में हर कोई ऐसा लगता है कि अगर वे एमवीसी करना चाहते हैं तो उन्हें किसी प्रकार के ढांचे का उपयोग करना चाहिए। वेबफॉर्म में क्या उन्हें खुद को करने से रोक रहा है?

उत्तर

9

यदि आपकी टीम में कोई वरिष्ठ आपको अपने ऐप के लिए एमवीसी देखने के लिए प्रोत्साहित कर रहा है और आपको लगता है कि यह एक अच्छा कदम है तो इसके लिए जाएं (यदि यह ऐप विशेष रूप से अकेला है)।

आप MVVM पैटर्न पर भी देख सकते हैं। वेबफॉर्म के साथ कई ने ऐसा किया है और यह एमवीसी पैटर्न के समान है। वेबफॉर्म पर एमवीवीएम पैटर्न को लागू करके आप दिखाएंगे कि कोई भी वेबफॉर्म का उपयोग कैसे कर सकता है लेकिन एएसपी.NET एमवीसी के साथ एमवीसी पैटर्न में बहुत अच्छीता प्राप्त करें। टीम में अन्य देवताओं को दिखाने का यह एक अच्छा तरीका होगा वेबफॉर्म को अधिक से अधिक एसओसी और टेस्टेबल बनाने के लिए क्या किया जा सकता है बिना वेबफॉर्म को छोड़कर।

यहाँ MVVM पर कुछ और अधिक लिंक है:

http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

MVVM भी Silverlight क्षुधा में बहुत लोकप्रिय है ....

वहाँ भी MVP पैटर्न के रूप में अच्छी तरह से है । Here's an open source implementation for WebForms। यह विशेष कार्यान्वयन DotNetNuke 5.3 द्वारा उपयोग किया जाता है।

A bit more explanation from MS on MVP and .Net

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

3

हां, एमवीसी का प्रत्येक संस्करण पिछले एक की तुलना में वेब रूपों से भी अधिक भिन्न है।

यदि आप वास्तव में वास्तविक एमवीसी का उपयोग नहीं करना चाहते हैं, तो MVP (मॉडल - देखें - प्रस्तुतकर्ता) पैटर्न देखें।

+1

हम मेरा एक पिछले काम पर एमवीपी इस्तेमाल किया, और यह वास्तव में काम किया अच्छी तरह से यूआई को बिजनेस लेयर से अलग करना। यदि आप वेबफॉर्म में फंस गए हैं तो एमवीसी के लिए एक अच्छा विकल्प। – Martin

3

आईएमएचओ, मुझे लगता है कि आपको बस एमवीसी में जाना चाहिए।

  • मैं अपने HTML आउटपुट को नियंत्रित करने में सक्षम होना चाहते:

    यहां कुछ कारण है कि मैं परिवर्तन करने रहा है। [कुछ वेब नियंत्रण हैं जो ब्राउज़र के आधार पर अलग-अलग टैग प्रस्तुत करते हैं।इसके अतिरिक्त, क्लाइंट आईडी का नियंत्रण रखना अच्छा लगता है।]

  • मुझे अपने अनुप्रयोगों की स्थिति का प्रबंधन करने में सक्षम होना पसंद है। [वेबफॉर्म होने के विरोध में, मेरे लिए इसे प्रबंधित करने का प्रयास करने के बजाय, सख्त रूप से आवश्यक डेटा के बड़े हिस्से को पार करना।]
  • मैं परीक्षण संचालित तरीके से काम करना पसंद करता हूं और मुझे पता चला है कि मैं बेहतर परीक्षण कवरेज प्राप्त कर सकता हूं MVC।
  • मुझे पता चला है कि JQuery जैसे पुस्तकालय एमवीसी के साथ अविश्वसनीय रूप से अच्छी तरह से काम करते हैं; मैंने पाया है कि वेबफॉर्म में दर्द होने वाले UI तत्वों को एमवीसी में छोटा हो गया है।

तो, अपने प्रश्न पर वापस आना ... क्या आप वेबफॉर्म ऐप्स बना सकते हैं जो एमवीसी के कई पाठों का उपयोग करते हैं। निश्चित रूप से, और यदि आप वेबफॉर्म ऐप्स बनाने जा रहे हैं तो मैं इसे एक अच्छी प्रैक्टिस के रूप में अनुशंसा करता हूं। क्या आप इसे एमवीसी की तरह बनाने के लिए ढांचे को लागू कर सकते हैं। निश्चित रूप से, लेकिन आप क्यों चाहते हैं कि आप केवल एमवीसी का उपयोग कर सकें?

+0

पहले बिंदु को छोड़कर सब कुछ के साथ सहमत हैं। मैंने वेब फॉर्म 4 सुना है उस पर बेहतर है। – Necros

+0

क्षमा करें, लेकिन मुझे असहमत होना चाहिए ... पैनल नियंत्रण जैसे वेबकंट्रोल कुछ शर्तों के बारे में कुछ धारणाएं करते हैं कि उन्हें विभिन्न स्थितियों में क्या उत्पादन करना चाहिए। [उदाहरण के लिए, यदि मुझे सही ढंग से याद किया जाता है तो वे आईई को एक डीआईवी आउटपुट करते हैं और फ़ायरफ़ॉक्स में एक टेबल ... यह बदल सकता है क्योंकि मुझे एएसपी.Net 1.1 के साथ इसमें भागना याद है] इसके अतिरिक्त, फ्रेमवर्क क्लाइंट साइड आईडी को नियंत्रित करने पर जोर देता है कोई रनैट = सर्वर तत्व। आवेदन के आधार पर, ये समस्याएं नहीं हो सकती हैं और मैं अपने HTML आउटपुट के बारे में अधिक से अधिक चुनौतीपूर्ण हो सकता हूं। –

+0

आपने मेरे परिप्रेक्ष्य से सबसे महत्वपूर्ण बिंदु खो दिया है।एमवीसी के साथ आपका राज्य डेटा के रूप में स्थानांतरित किया जाता है, पृष्ठ/नियंत्रण राज्यों के रूप में नहीं। जब आप उपयोगकर्ता इनपुट प्राप्त करना चाहते हैं, तो आपको स्पष्ट रूप से यह बताने की ज़रूरत नहीं है कि आप एक टेक्स्टबॉक्स, चेकबॉक्स या ड्रॉपडाउन आदि चाहते हैं। आप अपने मॉडल के आधार पर उपयोगकर्ता को प्रदान किए जाने वाले ड्राइव को चलाने के लिए इनपुट बिल्डर सम्मेलनों का उपयोग कर सकते हैं। यह आपको यूआई से व्यवसाय डेटा/प्रक्रिया को कम करने की अनुमति देता है। – Ryan

0

हां, आप अभी भी वेबफॉर्म का उपयोग कर सकते हैं और एक एमवीसी दर्शन लागू कर सकते हैं। अधिकांश भाग के लिए, वेब फॉर्म आपको एमवीसी सिद्धांतों को लागू करने से नहीं रोकते हैं; यह आपको गलत रास्ते से नीचे ले जा सकता है। यदि आप अभी भी एक वेबफॉर्म शॉप हैं, तो एमवीसी की "भावना" में निम्न कुछ चीजों को लागू करने का प्रयास करें। यह वेबफॉर्म से एमवीसी को कम कठोर बनाने में भविष्य में कदम उठाने में मदद करेगा।

  • राउटिंग का उपयोग करें। वेबफॉर्म में आप नियंत्रकों के बजाय अच्छे विस्तार रहित यूआरएल प्राप्त करने के लिए .aspx पृष्ठों के मार्गों को मानचित्र कर सकते हैं। यदि आप .Net 3.5 का उपयोग कर रहे हैं तो आपको कस्टम रूट हैंडलर की आवश्यकता होगी। 4.0 में, रूटिंग अंतर्निहित है।

  • अपने कोड में ईवेंट हैंडलर का उपयोग करने से बचें। अधिकांश मामलों में पेज_लोड होगा।

  • अपने मार्कअप को साफ और दुबला रखने के लिए व्यूस्टेट और वेब नियंत्रणों का उपयोग करने से बचें। यदि आपके मार्कअप में सबमिट बटन है, तो इसे इस तरह के < input type="button" की तरह लिखें: <asp:Button... आप गुणों का पर्दाफाश कर सकते हैं और <%= %> का उपयोग करके फ़ोरैच लूप का उपयोग कर सकते हैं जैसे कि आप लेबल और पुनरावर्तक नियंत्रणों का उपयोग करने के बजाय एमवीसी में देखते हैं।

  • ईवेंट हैंडलर, AJAX, और क्लाइंट साइड डीओएम मैनिपुलेशन सेट अप करने के लिए JQuery का उपयोग करें।

  • अपने .aspx पृष्ठों के साथ ViewModel ऑब्जेक्ट को जोड़कर ViewModel अवधारणा को अपनाना।

  • आप WebControls की जरूरत है, (नेट 4.0) मार्कअप में नियंत्रण के लिए उपयोग ClientIDMode = "स्थिर" अपने आईडी से अधिक

संबंधित मुद्दे