2017-06-21 16 views
1

DocumentDB/CosmosDBにアクセスするには、パッケージMicrosoft.Azure.DocumentDB.Core(v1.3.2)を使用しています。DocumentDBクライアントのライフタイム

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

インデックスやその他の情報についての情報を取得するために、エンドポイントに解雇要求の数があります:私は作成してDocumentClientクラスを初期化するとき、私は気づきました。正確には、.OpenAsync()に9つのHTTPリクエストが送信されます。これにより、クライアントの作成とアクティブ化はパフォーマンス面で非常にコストのかかる操作になります。すべてのリクエストを家に戻すには、最大1秒かかります。

この高価な操作を緩和するために、私はDocumentClientをシングルトンにして、アプリケーションの存続期間にわたって参照を保持しています。

アプリケーションはAsp.Net Core MVCであり、このオブジェクトの参照を数日間メモリ内に保持することがあります。

質問:このオブジェクトをその期間シングルトンとして保存しても問題ありませんか?もしそうでなければ、それを処分する戦略は何でしょうか?または、初期化をより安価にする方法があります(つまり、これらの初期要求をしないでください)。

答えて

5

は、我々としても自分のためにそれを疑問にして見つけたこの:は、アプリケーションノートの寿命のためにシングルトンDocumentDBクライアントを使用してください:docs

SDKの使用方法のヒント#1から

各DocumentClientインスタンスはスレッドセーフであり、ダイレクトモードで動作する場合は効率的な接続管理とアドレスキャッシングを実行します。効率的な接続管理とDocumentClientによるパフォーマンスの向上を実現するには、アプリケーションの存続期間中、AppDomainごとにDocumentClientの単一インスタンスを使用することをお勧めします。

これはまだ有効ですが、これでCosmosDBにも対応できるようになりました。

+0

ありがとうございました!私はこの記事を見逃してしまった。シングルトンです! – trailmax

関連する問題