Я новичок в MongoDB и NoSQL в целом, и я только что начал создавать сайт с MongoDB / Norm / ASP.NET MVC 3.
Мне интересно, как я должен оценивать подключения к моя база данных Mongo.
Прямо сейчас у меня есть Basecontroller, который создает экземпляр MongoSession, а 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);
}
}
Еще один дополнительный вопрос:
Открытие и закрытие соединений MongoDB с помощью Norm «дорогостоящие» операции?