一般来说,我对 MongoDB 和 NoSQL 非常陌生,我刚刚开始使用 MongoDB / Norm / ASP.NET MVC 3 构建一个网站。
我想知道应该如何确定与 Mongo 数据库的连接范围。
现在我有一个实例化 MongoSession 的 Basecontroller 和 onActionExecuted 我将其处置,以便我所有的派生控制器都可以访问我的 MongoSession。 MongoSession 类在其构造函数中打开一个连接,并通过 Dispose() 处理它,这就是它现在的工作方式。
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
我有点担心如果我还在控制器中做其他事情,它可能会保持连接打开太长时间。
这种方法是否足以避免冒保持太多连接打开的风险,或者我应该做一些更像下面的示例方法的事情?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
另一个后续问题是:
通过 Norm 打开和关闭 MongoDB 连接是否“昂贵”的操作?
我会让连接保持打开状态,因为重新创建连接的成本很高。 Mongo 很好,连接很多,开放时间很长。理想情况下,您应该做的是与应用程序的所有部分共享连接作为持久连接。 C# 驱动程序应该足够聪明,可以自己完成此操作,这样它就不会创建太多连接,因为它在内部使用“连接池”,甚至可以重用连接。文档说:“与服务器的连接在幕后自动处理(连接池用于提高效率)。”
干杯,
德里克
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)