标签:c azure azure-cosmosdb lifetime-scoping
要访问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,这可能会将此对象的引用保留在内存中数天.
问题:可以将此对象保持为单例吗?如果不是,应该采取什么策略来处置它?或者有没有办法使初始化更便宜(即不要做出这些初始请求?).
解决方法:
我们也想知道这对我们自己也发现了这个:
从docs
SDK Usage Tip #1: Use a singleton DocumentDB client for the lifetime of your application Note that each DocumentClient instance is thread-safe and performs efficient connection management and address caching when operating in Direct Mode. To allow efficient connection management and better performance by DocumentClient, it is recommended to use a single instance of DocumentClient per AppDomain for the lifetime of the application.
我想这仍然有效,现在你也可以用它来解决CosmosDB问题.
标签:c,azure,azure-cosmosdb,lifetime-scoping 来源: https://codeday.me/bug/20190527/1163816.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。