MVC में मैं कोशिश करता हूं और सुनिश्चित करता हूं कि मेरा नियंत्रक जितना संभव हो उतना "पतला" हो और यह भी कि मेरे मॉडल जितना संभव हो उतना गूंगा हो।
जिन लॉजिक और हेल्पर फंक्शंस की जरूरत होती है, उन्हें अलग-अलग स्टैंड हेल्पर क्लासेस में रखा जाता है। यह मेरे परीक्षण को बहुत आसान बनाता है और साथ ही (आप परीक्षण कर रहे हैं .. सही ??: D) परीक्षण नियंत्रकों के लिए बहुत कठिन है, किसी भी समय आप कोशिश करते हैं और नियंत्रक का एक उदाहरण बनाते हैं जो आपको परीक्षण के बारे में सोचना पड़ता है HTTP संदर्भ और फ़ेकिंग http यह और वह, और इसका दर्द, लेकिन इसका उद्देश्य पर एक दर्द। आपको उस सभी सामान की आवश्यकता है क्योंकि एक नियंत्रक HTTP और वेब से बहुत निकट से जुड़ा हुआ है। यह आपके वेब ऐप में प्रवेश बिंदु है।
तर्क और सहायक कार्यों का वेब से कोई लेना देना नहीं है। वे पूरी तरह से पर्यावरण अज्ञेय हैं (या उन्हें होना चाहिए)। अकेले ही आपको बताना चाहिए कि वे एक ही जगह एक साथ नहीं हैं। साथ ही, यदि आप अपने सभी एप्लिकेशन लॉजिक को वेब, या किसी विशेष वेब कार्यान्वयन के साथ निकटता से बाँधते हैं, तो आप इसे कभी भी अपने साथ नहीं ले जा सकते।
हमने अपनी सभी डेटाबेस संस्थाओं (हमारे mvc मॉडल नहीं, हमारे वास्तविक db एंटिटीज़), हमारे स्टोरेज, हमारे हेल्पर क्लासेस और सेपरेट स्टैंड में हमारे तर्क को अकेले dll के साथ विकसित किया। हमारे पास केवल एक वेब साइट है, लेकिन हमने इसे वैसे भी किया।
कुछ महीने पहले हमें कुछ डेस्कटॉप ऐप बनाने के लिए कहा गया था जो हमारे कुछ फ्रिंज सिस्टम से संबंधित हैं। यह आसानी से किया गया था क्योंकि हमारे सभी परीक्षण किए गए कोड आसानी से पुन: उपयोग किए जा सकते थे। यदि हम अपने कोड को अपने वेब प्रोजेक्ट में भेज देते हैं, या अपने नियंत्रकों में डाल देते हैं, तो हम कभी ऐसा नहीं कर पाएंगे।