Cor*_*ndt 5 .net c# mongodb mongodb-.net-driver
我有一个使用 mongodb 作为底层存储的 RESTful 后端。我正在使用 c# 驱动程序。文档说明 mongo 自行管理其连接池。
问题是:要与 mongodb 通信,我需要以下实现的实例
IMongoClientIMongoDatabaseIMongoCollection<T>管理这些对象生命周期的最佳实践是什么?我可以在每个服务器(应用程序域)中使用单例生活方式存储它们,或者我可以根据请求继续创建它们。目前仅针对IMongoCollection<T>每个请求。
推荐的方法是持有一个MongoClient实例,并在需要时使用它来获取数据库和集合。
如果这对您的性能至关重要,您可以主动缓存所有这些实例,但在大多数情况下,这是不必要的,因为所有这些类型的创建都非常简单且成本低廉。例如这是GetCollection方法:
public override IMongoCollection<TDocument> GetCollection<TDocument>(string name, MongoCollectionSettings settings)
{
Ensure.IsNotNullOrEmpty(name, "name");
settings = settings == null ?
new MongoCollectionSettings() :
settings.Clone();
settings.ApplyDefaultValues(_settings);
return new MongoCollectionImpl<TDocument>(this, new CollectionNamespace(_databaseNamespace, name), settings, _cluster, _operationExecutor);
}
Run Code Online (Sandbox Code Playgroud)
除了一些参数处理和一些分配之外,这里真的没有做任何事情。实际上昂贵的是连接池,并且(正如您提到的)它由驱动程序在内部处理。
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |