/ / MVC, HttpContext.Current का उपयोग करने के लिए "माना" नहीं जाता है? - asp.net-mvc, नियंत्रक, httpcontext

एमवीसी, अब "माना" नहीं है HttpContext.Current का उपयोग करने के लिए? - asp.net-mvc, नियंत्रक, httpcontext

कोई एक पोस्ट में यहाँ, टिप्पणी की कि आपको MVC का उपयोग करते समय HttpContext.Current का उपयोग नहीं करना चाहिए, बल्कि, आपको उपयोग करना चाहिए ControllerBase.ControllerContext। कुछ मामलों में, यह समझ में आता है, लेकिन अन्य मामलों में यह नहीं है "टी।

उदाहरण के लिए, नियंत्रक नियंत्रक एक उदाहरण हैचर, इसलिए हर जगह मैं अपने सत्र चर का संदर्भ देना चाहता हूं, मुझे नियंत्रक का संदर्भ लेना होगा? हम MVC में HttpContext.Current का उपयोग करने के लिए "माना नहीं" क्यों कर रहे हैं, जब आप अभी भी कर सकते हैं? क्या नियंत्रक के संदर्भ के बिना मेरे सत्र ऑब्जेक्ट को प्राप्त करने के लिए "उपयुक्त" एमवीसी "तरीका" है?

मैं परीक्षण-वार जानता हूं, यह बताए गए कारणों के लिए बेहतर हैकई अन्य स्थानों पर, लेकिन मैं एक ऐसी परियोजना पर काम कर रहा हूं जो सत्र चर का प्रबंधन करती है और HttpContext.Current का संदर्भ लेती है और मैं जानना चाहता हूं कि क्या नियंत्रक के संदर्भ में पारित किए बिना सत्र वस्तु पर मेरे हाथ पाने का बेहतर तरीका है।

उत्तर:

उत्तर № 1 के लिए 7

यह मुख्य रूप से है क्योंकि यदि आप उपयोग करते हैं तो यूनिट परीक्षण बहुत मुश्किल होगा HttpContext.Current चूंकि इस मूल्य का मजाक उड़ाना सामान्य नकली रूपरेखाओं का उपयोग करना संभव नहीं है।

HttpContext.Current अधिक भंगुर कोड के लिए भी बनाता है क्योंकि यह हो सकता हैगाली दी और दुरुपयोग किया। उदाहरण के लिए, आप इसे व्यापार परत में उपयोग कर सकते हैं क्योंकि यह सुविधाजनक है लेकिन यह टूट जाएगा यदि आप ASP.NET के अलावा अन्य वैकल्पिक प्रस्तुति परत का उपयोग करना चुनते हैं।

आम तौर पर स्थिर विधियां आजकल नहीं हैं क्योंकि वे नहीं हो सकते हैं निर्भरता इंजेक्शन.


उत्तर № 2 के लिए 1

आपकी एक पोस्ट मॉक टेस्टिंग के कारण थी, जहाँ मॉक के आधार पर एक HttpContext नहीं हो सकता है, केवल एक नियंत्रक संदर्भ। अन्यथा, मैं उपयोग करता हूं HttpContext.Current, बस मेरी इकाई परीक्षणों में नहीं।