2017-06-21 28 views
1

要访问我使用的是包Microsoft.Azure.DocumentDB.Core(V1.3.2)DocumentDB/CosmosDB。DocumentDB客户lifeteme

var documentClient = new DocumentClient(new Uri(endpointUrl), primaryKey); 
await documentClient.OpenAsync(); 

有一些被炒到终点,以获取有关索引和其他信息的请求:当我创建和初始化DocumentClient类我已经注意到了。确切地说,在.OpenAsync()上有9个HTTP请求。这使得创建和激活客户端在性能方面成本非常高昂 - 需要一秒钟的时间才能将所有请求返回主页。

因此,要缓解这种代价高昂的操作我正在DocumentClient是独立的,并保持周围引用该应用程序的生命周期。

应用是Asp.Net核心MVC,这可能保持这个对象的引用在内存中的天。

问题:是否可以将此对象作为单独的对象持续这么久?如果不是,应该采取什么策略来处置它?还是有办法让初始化更便宜(即不要提出这些最初的请求?)。

回答

5

我们想知道,对于我们自己,也和发现这一点:

docs

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

我想现在你仍然可以用CosmosDB来解决它。

+0

谢谢!我错过了这篇文章。辛格尔顿! – trailmax