В чем разница между статическим полем Dictionary
, полем (статическим или нестатическим?) ConcurrentDictionary
и одноэтапной службой, зависимой от внедренных в контроллере в ASP.NET Core?
Статический словарь.
public class HomeController : Controller
{
private static IDictionary<string, string> _dictionary =
new Dictionary<string, string>();
}
A (статический или нестатический?) ConcurrentDictionary
.
public class HomeController : Controller
{
private IDictionary<string, string> _dictionary =
new ConcurrentDictionary<string, string>();
}
Свойство Dictionary
внутри одноэтапной службы с зависимостью.
// Startup.cs
services.AddSingleton<HomeService>(); // Dependency injection
// HomeService.cs
public class HomeService
{
public IDictionary<string, string> MyDictionary { get; set; } =
new Dictionary<string, string>();
}
// HomeController.cs
public class HomeController : Controller
{
private HomeService _service;
public HomeController(HomeService service)
{
_service = service;
}
public IActionResult Index()
{
_service.MyDictionary.Add("foo", "bar");
return Ok();
}
}
В чем разница? Чем они отличаются друг от друга? Любой подход предпочтительнее другого?