2010-02-07 11 views
9

हम इन गुणों के साथ एक WebForms आधारित वेब अनुप्रयोग है:सी # एएसपी.नेट, वेबफॉर्म एमवीसी: क्या हमारे मामले में बदलाव करना समझ में आता है?

बड़े व्यापार वस्तु फ्रेमवर्क (बंद बुनना दाल/व्यापार वस्तुओं/serverside मान्यकरण, CSLA के समान) Precompiled और बिन फ़ोल्डर में रखा। बहुत सारे UserControls का उपयोग करता है।

एमवीसी के अवलोकनों को देखते हुए ऐसा लगता है कि कोड कैसे विभाजित होता है, इस पर एक विशिष्ट विभाजन है, कोई सत्र राज्य नहीं है (जो अजीब लगता है, लेकिन संभवतः ठीक है अगर वेबसाइट मुख्य रूप से सामग्री की सेवा कर रही है?) और यह निर्माण प्रतीत होता है पेज क्लासिक एएसपी के समान दिखते हैं (<%%> टैग का उपयोग)

क्या मेरे पास एमवीसी की गलत व्याख्या है? क्या एमवीसी सिर्फ एक विशिष्ट वास्तुकला है, या जिस तरह से चीजें चल रही हैं और वेबफॉर्म को अंततः गिरा दिया जाएगा? एक मौजूदा व्यापार ऑब्जेक्ट फ्रेमवर्क मौजूद होने पर एम-वी-सी कैसे विभाजित करता है? कोई सत्र स्थिति क्यों नहीं है? क्या उपयोगकर्ता नियंत्रण एमवीसी में काम करते हैं?

मुझे एहसास है कि यह व्यक्तिपरक हो सकता है, इसलिए ज्यादातर इस विषय पर आपकी टिप्पणियों को ढूंढने के लिए मेरे दिमाग को बनाने के लिए।

+3

एएसपी.नेट एमवीसी आपको सत्र राज्य का उपयोग करने से नहीं रोकता है। यह सिर्फ एएसपी.नेट आवेदन करने का एक पैटर्न है। –

+0

@ हसन: धन्यवाद, यकीन नहीं है कि मैंने सोचा क्यों यह मामला था ... –

उत्तर

11

एमवीसी 9 0% + वेबफॉर्म के समान है, लेकिन निश्चित रूप से जब हर किसी की बहस होती है तो वे उस बोली को छोड़ देते हैं।

आप जितनी परतें प्रदान कर सकते हैं उतनी परतें हो सकती हैं, और हाँ आप UserControl शैली कर सकते हैं। यह प्रौद्योगिकी परिवर्तन की तुलना में एक मानसिकता परिवर्तन से अधिक है। एमवीसी के पास इसके फायदे हैं, यह इस तथ्य को गले लगाता है कि HTTP राज्यहीन है। वेबफॉर्म एक तथ्य के लिए तथ्य को सार तत्व बनाता है, जिससे कुछ चीजें भी आसान होती हैं (उदाहरण के लिए देखें)। सत्र राज्य, संकलन ... यह सब वहाँ है, यह दोनों के नीचे एक ही ढांचे में है।

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

मैं वेबफॉर्म में एक और प्रोजेक्ट शुरू नहीं करूंगा, लेकिन यह मुझे है, और जो मुझे सहज है ... आपको वास्तव में यह पता लगाना होगा कि आपके लिए कौन सा प्राकृतिक लग रहा है, और यदि लागू हो, तो आपकी टीम।

इसके अलावा, tvanfosson ने एक उत्कृष्ट बिंदु बनाया: वेब प्रोजेक्ट में जितना अधिक वैध तर्क या वास्तव में जो भी कस्टम तर्क था, उतना ही अधिक समय ले जाने के लिए। यदि आपके पास पहले से ही परतों का उत्कृष्ट पृथक्करण है, तो ऐसा करने के लिए आप एक बेहतर स्थिति में हैं, यदि नहीं, तो यह एक और बड़ा समय विचार है।

+1

+1। यह इस तरह के एक प्रश्न के लिए मैंने देखा है कि सबसे स्वच्छ जवाब के बारे में है। – David

+2

यदि उन्होंने कस्टम उपयोगकर्ता कंट्रोल में बहुत सारे मॉडल (सत्यापन शामिल) का निर्माण किया है, तो यह एक बड़ा पुनर्चक्रण, आईएमओ इंगित करने से बड़ा परिवर्तन है। – tvanfosson

+1

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

6

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

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

+1

व्यूस्टेट/सत्र राज्य के बारे में अच्छा बिंदु, निश्चित रूप से वहां उलझन में है। स्पष्ट रूप से वेबफॉर्म से आ रहे हैं हमने सत्रस्टेट और व्यूस्टेट के लिए उपयोग को हरा दिया है। अगर हम सत्र राज्य का उपयोग करते रहें क्योंकि यह ठीक है ... हालांकि अगर हमारे पास कोई व्यूस्टेट नहीं है और हम एक फॉर्म पर कई पोस्टबैक कर रहे हैं, तो क्या हमें क्लाइसिक एएसपी (यानी स्टोर वैल्यू) में उपयोग की जाने वाली सभी चालों पर वापस जाना होगा यूआरएल पर और उनके फॉर्म [] मान के आधार पर मूल्यों को पढ़ते हैं? उदाहरण के लिए जब कोई टेक्स्टबॉक्स पृष्ठ पर होता है तो क्या होता है जब भी कोई टेक्स्टबॉक्स 1 पढ़ सकता है। अगला मूल्य? –

+2

एमवीसी में कोई सर्वर साइड कंट्रोल नहीं है। आपको मॉडल के माध्यम से डेटा मिलता है कार्रवाई पैरामीटर, आमतौर पर, या सीधे अनुरोध से (या मूल्य प्रदाता के माध्यम से) के लिए बाध्यकारी।आप पाएंगे कि संपूर्ण प्रतिमान अलग है - एक चीज के लिए आप प्रति पृष्ठ एकाधिक रूपों को बना सकते हैं, प्रत्येक अपनी क्रिया पर वापस पोस्ट कर सकता है। यह भी है, आईएमओ, AJAX का उपयोग करना बहुत आसान है, इसलिए राज्य की कमी बहुत कम महत्वपूर्ण है क्योंकि आप पृष्ठ पर उपयोगकर्ता को छोड़ते हैं और पृष्ठभूमि में अतुल्यकालिक अनुरोध को संभालते हैं - पूरे फॉर्म की राउंड ट्रिप की आवश्यकता नहीं होती है। – tvanfosson

2

एमवीसी एक ही पुरानी शराब के लिए एक चमकदार नई बोतल है जो वेब & जिस तरह से काम करता है।

दूसरी ओर, आप अंततः दूर asp.net viewstate से & पेज जीवन चक्र, Postbacks, स्थानांतरित कर सकते हैं पागल यूआरएल आदि

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

आमतौर पर, मैं आपके कोड को मॉडल-कंट्रोलर परत & में पूर्ण करने के बाद पहली बार कारक करने की अनुशंसा करता हूं, फिर यूआई को & में एमवीसी के यूआरएल रूटिंग तंत्र का उपयोग करें। वैकल्पिक रूप से आप किसी भी सभ्य यूआरएल रीराइटिंग मॉड्यूल का उपयोग कर सकते हैं & आरईएसटी-स्टाइल यूआरएल पहले & नए यूआरएल & पर अपने पुराने यूआरएल को फिर से लिखें, फिर धीरे-धीरे अपने आवेदन के अनुभागों को एमवीसी में परिवर्तित करें।

+0

तीसरे पक्ष के नियंत्रण के बारे में अच्छा बिंदु। हम विभिन्न चीजों के लिए बैक एंड पर काफी कुछ उपयोग करते हैं और वास्तव में ओवरहेड को कम करने के लिए अपने स्वयं के UserControl + jQuery घटकों के लिए एक व्यापक UI नियंत्रण लाइब्रेरी को हटा दिया है। –

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