अनुरोध डेटा ले जाने का बेहतर तरीका कौन सा है (क्या दो तरीकों के बीच कोई अंतर है)?HttpContext.Items बनाम स्कोप्ड सेवा
उदाहरण के लिए:
विकल्प 1 (Scoped Service
):
//Scoped Service(this may be interface)
public class SampleScopedService
{
public string Data { get; set; }
}
//Register service
services.AddScoped<SampleScopedService>();
//Set and Get Data
public class SampleUsage
{
private readonly SampleScopedService _sampleScopedService;
public SampleUsage(SampleScopedService sampleScopedService)
{
_sampleScopedService = sampleScopedService;
// _sampleScopedService.Data = "Sample";
// _sampleScopedService.Data
}
}
विकल्प 2 (HttpContext.Items
)
//Scoped Service
public class SampleScopedService
{
private readonly IHttpContextAccessor _accessor;
public SampleScopedService(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public string GetData()
{
return (string)_accessor.HttpContext.Items["Data"];
}
}
//Register service
services.AddScoped<SampleScopedService>();
//Set Data
HttpContext.Items[“Data”] = ”Sample”;
//Get Data
public class SampleUsage
{
private readonly SampleScopedService _sampleScopedService;
public SampleUsage(SampleScopedService sampleScopedService)
{
_sampleScopedService = sampleScopedService;
//_sampleScopedService.GetData();
}
}
मुझे लगता है कि "डि में सीधे डेटा और विन्यास संगृहीत करने से बचें" है के खिलाफ 'services.AddScoped (एसपी => नई DataHolder {मूल्य =" का मान "})' के बारे में क्या "यह वास्तविक आइटम की जरूरत अनुरोध करने के लिए बेहतर है DI के माध्यम से, यदि संभव हो तो "- यह' सेवाओं की तरह है। AddScoped (sp => sp.GetService() .GetData()) '। मेरे अभ्यास में मुझे अक्सर कुछ अनुरोधों को डीबी/क्यूई-संदेश से पुनर्प्राप्त करने की आवश्यकता होती है, जिसे कुछ अनुरोधों में बाद में अनुरोध प्रक्रिया में उपयोग किया जाता है। इस तरह के मामले में मुझे विकल्प 1 का उपयोग करने में कुछ भी बुरा नहीं लगता है ('HttpContext.Items' केवल तारों को पकड़ सकता है, यानी अतिरिक्त क्रमबद्धता आवश्यकता)। –
smg