如何在dotnet核心应用程序中将DocumentDB客户端初始化为Singleton

时间:2017-09-11 17:03:29

标签: .net-core azure-cosmosdb

我正在.net核心构建一个MVC Web应用程序,并将使用带有DocumentDB API的CosmosDB。我一直在阅读,为了表现你应该

  

在应用程序的生命周期中使用单个DocumentDB客户端请注意,每个DocumentClient实例都是线程安全的,并且在直接模式下运行时执行有效的连接管理和地址缓存。为了通过DocumentClient实现高效的连接管理和更好的性能,建议在应用程序的生命周期内为每个AppDomain使用一个DocumentClient实例。

但我不确定如何做到这一点。

我将使用以下代码将我的服务注入我的控制器,每个控制器对应一个不同的集合。

services.AddScoped<IDashboard, DashboardService>();
services.AddScoped<IScheduler, SchedulerService>();
services.AddScoped<IMailbox, MailboxService>();

如何将DocumentDB客户端创建为Singleton并在这些服务中注入/使用它?

1 个答案:

答案 0 :(得分:10)

您应该能够使用类似的方法:

services.AddSingleton<IDocumentClient>(x => new DocumentClient(UriEndpoint, MasterKey));

然后在您的控制器中,您可以通过以下方式注入客户端:

private readonly IDocumentClient _documentClient;
public HomeController(IDocumentClient documentClient){
    _documentClient = documentClient;
}