में 'सेवा' में वेब संदर्भ पास करना मैं एक सेवा वर्ग (या इसके संदर्भ में कक्षा को आरंभ करने) में वेब वर्तमान http संदर्भ को पारित करने का एक तरीका तैयार करने का प्रयास कर रहा हूं। मैं इसे http संदर्भ के बारे में कुछ भी जानने की आवश्यकता से दूर बाकी ऐप को अमूर्त करने के लिए कर रहा हूं।एएसपी एमवीसी ऐप
मैं यह भी चाहता हूं कि सेवा टीडीडी का उपयोग करके टेस्ट करने योग्य हो, शायद मॉक करने योग्य ढांचे में से एक का उपयोग कर। इसलिए वास्तविक वर्ग की बजाय इंटरफ़ेस का उपयोग करना बेहतर होगा।
मैं प्राप्त करना चाहते हैं का एक उदाहरण:
class WebInstanceService
{
private IHttpContext _Context;
public WebInstanceService(... , IHttpContext HttpContext)
{
....
_Context = HttpContext;
}
// Methods...
public string GetInstanceVariable(string VariableName)
{
return _Context.Current.Session[VariableName];
}
}
मुख्य मुद्दों मेरे पास है में से एक नहीं IHttpContext, .net http संदर्भ एक अमूर्त वर्ग का एक उपवर्ग है है कि वहाँ है जो कर सकते हैं मजाक नहीं किया जा सकता है (आसानी से?)।
एक और मुद्दा यह है कि मैं कक्षा के वैश्विक उदाहरण शुरू नहीं कर सकता क्योंकि तब संदर्भ अधिकांश अनुरोधों के लिए प्रासंगिक नहीं होगा।
मैं कक्षा स्थिर कर सकता है, और प्रसंग की आवश्यकता होती है प्रत्येक कार्य को पास करने की के रूप में यह यानी
public static string GetInstanceVariable(string VariableName, HttpContext Context)
{ ... }
कहा जाता है लेकिन इस वर्ग नहीं है किसी भी आसान परीक्षण करने के लिए, मैं अभी भी करने की जरूरत है एक HttpContext बनाएं और इसके अतिरिक्त किसी भी गैर-वेब-जागरूक सेवाओं को जो इस कक्षा का उपयोग करना चाहते हैं, अचानक उन संदर्भों को पुनर्प्राप्त करने में सक्षम होना चाहिए जिन्हें उन्हें वेब सर्वर के साथ मिलकर जोड़ा जाना चाहिए - इस वर्ग को पहले में बनाना चाहते हैं जगह।
मैं सभी सुझावों के लिए खुला हूं - खासकर जो लोग जानते हैं कि आसानी से आसान परीक्षण की सुविधा है। लोग इस समस्या से निपटने का सुझाव कैसे देंगे?
चीयर्स
यह वही है जो मैं करने की कोशिश कर रहा हूं, मैं नहीं चाहता कि मेरे ऐप में सेवाओं को डेटा पुनर्प्राप्त करने के लिए सत्र तक पहुंचने के बारे में चिंता करने की ज़रूरत है, तो मैं वेबस्टेंस सेवा कक्षा के माध्यम से जाऊंगा। – Ash
मैं भी WebInstanceService पर सवाल उठाऊंगा। क्या सेवा को वेब से यह जानने की ज़रूरत है? –