Я создаю веб-приложение с ASP.NET Core 2.2 и хранилищем таблиц Azure. Поскольку Microsoft предоставляет нам класс CloudTableClient
в Azure Storage SDK, я буду использовать этот класс с Dependency Injection (DI). Однако в стандартном подходе DI есть три метода определения области регистрации, такие как AddScoped
, AddTransient
и AddSingleton
. У меня вопрос, какой объем регистрации является лучшим для класса CloudTableClient
. Я подумал, что AddSingleton
лучше всего, потому что не происходит голодание пула соединений, и я буду использовать его как прикрепленный пример кода. Но если использование AddSingleton
в какой-то мере плохо (т.е. безупречность или надежность), я бы хотел получить совет.
//Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//do something
services.AddSingleton(provider =>
{
var settings = Configuration["AzureStorageConnectionString"];
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(settings);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
return tableClient;
});
//do something
}
//SampleController
public class SampleController : Controller
{
private CloudTable _table { get; };
public SampleController(CloudTableClient tableClient)
{
_table = tableClient;
}
public async Task<IActionResult> GetSample(string id)
{
//do something with _table
}
}