2008-08-30 20 views
9

इसलिए मैं एएसपी.नेट एमवीसी प्रोजेक्ट शुरू कर रहा हूं और अनुभव पूरी तरह से अच्छा रहा है, लेकिन मैं अपने नियंत्रक बनने वाले स्पेगेटी गड़बड़ी से काफी खुश नहीं हूं। मैंने ऑनलाइन चारों ओर देखा है (CodeCampServer, आदि ...) और वे सभी एक ही समस्या का सामना करते हैं जहां नियंत्रक विधियां एसआरपी (एकल जिम्मेदारी सिद्धांत) का लगातार उल्लंघन करती हैं - जैसे एक नियंत्रक विधि जो अनुरोध को प्रस्तुत करता है एक प्राप्त करें लेकिन मॉडल पोस्ट करें यदि यह एक पोस्ट है। अब मेरे पास पूरे एप्लिकेशन में एकाधिक लॉजिकल मार्गों के लिए नियंत्रक विधियां हैं - यह कहें कि यह जांच करता है कि फ़ॉर्म पर कौन सा बटन क्लिक किया गया था और तदनुसार कार्य करता है। मैं जावास्क्रिप्ट का उपयोग करके प्रत्येक बटन को एक अलग फॉर्म एक्शन पर क्लिक कर सकता हूं, लेकिन कुछ भी सही नहीं लगता है ... दूसरा बड़ा मुद्दा जादू तारों का प्रसार है - व्यूडाटा ["foo"] = blah; लंबी कहानी छोटी, आप लोग अपने नियंत्रक तर्क कैसे बनाते हैं? प्रति दृश्य एक विशाल मॉडल वस्तु? बहुत कम नियंत्रक विधियों और जावास्क्रिप्ट राउटर है? मेरा लक्ष्य रखरखाव कोड है - क्योंकि फीचर्स ढेर हो जाते हैं, मैं उस फिसलन ढलान को स्लाइड करना शुरू कर रहा हूं ...एएसपी.नेट एमवीसी: स्ट्रक्चरिंग कंट्रोलर

उत्तर

8

एएसपी.नेट पूर्वावलोकन 5 (CodePlex पर उपलब्ध) के लिए इसका उत्तर है: [AcceptVerbs] विशेषता। फिल हैक की blog post चर्चा है कि इसका उपयोग कैसे किया जाता है।

दृश्य डेटा जादू कुंजी प्रश्न के रूप में, यह एक दिलचस्प समस्या है। यदि आप अर्ध-स्वतंत्र घटकों (विशेष रूप से नए आंशिक दृश्य समर्थन के प्रकाश में) के समूह के रूप में विचार के बारे में सोचते हैं, तो दृढ़ता से टाइप किए गए मॉडल को कम आदर्श बना दिया जाता है, क्योंकि दृश्य के कई टुकड़े अपेक्षाकृत स्वतंत्र होते हैं एक दूसरे।

0

इस समस्या को संभालने वाले विभिन्न लोग कैसे हैं? मुझे पता है कि मैंने मॉडल फ़ोल्डर के अंदर गड़गड़ाहट की समीक्षा करने में कुछ घंटे बिताए हैं। मैं फ़ोल्डर्स बनाने में ढूंढ रहा हूं, विज़ुअल क्लटर को कम करने में सहायक है, मेलिंग नेमस्पेस का उपयोग करके भी बहुत मदद मिलती है।

लेकिन मेरे नियंत्रक इस समय मोनोलिथ हैं। परेशानी यह है कि मैं इस परियोजना में इस बिंदु पर सीखने पर ध्यान केंद्रित कर रहा हूं (अभी भी बहुत से हल करने के लिए)।

मुझे अब एमवीसी पर अच्छा संभाल मिल रहा है, इसलिए जटिलता की समीक्षा करने और नियंत्रकों को बेहतर नाम और क्लीनर कार्यों में संशोधित करने का समय है।

क्या अन्य लोग अपने नियंत्रकों को उप नियंत्रकों में तोड़ रहे हैं? (यदि ऐसी कोई चीज है)

+0

अपने नियंत्रकों को कोड करने की चाल उन्हें देखने और कहने के लिए है कि 'यदि प्रत्येक क्रिया विधि 20 या 30 लाइनों या कुछ अपेक्षाकृत छोटी संख्या में हो रही है, तो मैं इसे कैसे कम कर सकता हूं?', असल में, इसे DRY रखें और जो भी आप कर रहे हैं उसे पुनर्विचार करें और उस तर्क को कुछ उचित सेवा परत में ले जाएं, जिसे पुन: उपयोग किया जा सकता है। –

+0

इसके अलावा, आरओबी कोंरी की स्टोरफ्रंट एमवीसी स्टार्टर किट डाउनलोड करें और देखें कि उसने अपना समाधान कैसे दिया है -> बहुत उबर awesomesauce। (इसे गूगल, मुझे सुबह के इस देर से (शुरुआती ?!) घंटे में लिंक ढूंढने पर परेशान नहीं किया जा सकता ... hth! –

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