jestem bardzo nowy MongoDB i NoSQL w ogóle, a ja dopiero się rozpoczął budowanie witryny z MongoDB/Normy/ASP.NET MVC 3.Kiedy należy otwierać i zamykać połączenia MongoDB?
Zastanawiam się w jaki sposób należy określenie zakresu połączenia do mojej bazy danych Mongo .
W tej chwili mam Basecontroller, który wprowadza MongoSession i onActionExecuted i pozbyć go, aby wszystkie moje pochodne kontrolery miały dostęp do mojej MongoSession. Klasa MongoSession otwiera połączenie w swoim konstruktorze i udostępnia je w Dispose(), tak jak dzisiaj.
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
Trochę się martwię, że może utrzymywać zbyt długie połączenia, jeśli robię inne rzeczy w kontrolerach.
Czy jest to podejście, które nie naraża na ryzyko otwarcia zbyt wielu połączeń lub czy powinienem zrobić coś bardziej podobnego do poniższej przykładowej metody?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
Innym śledzić pytanie brzmi:
Czy otwieranie i zamykanie połączeń MongoDB przez Norma „drogie” operacji?
Norma jest ledwo utrzymuje się dłużej, jeśli chcesz iść wsparcie LINQ z oficjalnym kierowcą Mongo z FluentMongo na wierzchu. –
Oprócz tej kwestii otwierania i zamykania połączeń na kodzie, miałem problemy z zamknięciem połączenia dostawcy Internetu, a następnie mój kod o wyjątku EndOfStreamException. Rozwiązałem go za pomocą settings.MaxConnectionIdleTime = TimeSpan.FromSeconds (30); https://stackoverflow.com/a/44606284/194717 – Tony