为了访问DocumentDB/CosmosDB,我使用了Microsoft.Azure.DocumentDB.Core(v1.3.2)包。当我创建并初始化DocumentClient类时,我注意到:
var documentClient = new DocumentClient(new Uri(endpointUrl), primaryKey);
await documentClient.OpenAsync();
在该端点上发送了一系列请求以获取有关索引和其他信息的信息。确切地说,在
.OpenAsync()
上会发出9个HTTP请求。这使得客户端的创建和激活在性能方面非常昂贵,需要花费将近一秒钟的时间才能获取所有请求。因此,为了减轻这种昂贵的操作,我将
DocumentClient
设置为单例,并在应用程序的生命周期内保留引用。应用程序是Asp.Net Core MVC,这可能会在内存中保留此对象的引用几天。 问题:将此对象作为单例保留那么长时间是否可行?如果不行,应该采取什么处理策略?或者是否有办法使初始化更便宜(即不进行这些初始请求)?