Quand devrais-je être d'ouverture et de fermeture MongoDB connexions?

je suis très nouveau à MongoDB et NoSQL, en général, et je viens de commencer la construction d'un site avec MongoDB /Norme /ASP.NET MVC 3.

Je me demande comment je doit être portée aux connexions à ma base de données Mongo.

Droit maintenant, j'ai un Basecontroller instanciant la MongoSession et onActionExecuted-je me débarrasser d'elle de sorte que tous mes découlant des contrôleurs auront accès à mon MongoSession. Le MongoSession classe ouvre une connexion à son constructeur et l'envoie sur Dispose(), la façon dont il fonctionne aujourd'hui.

private IMongo _mongo;

public MongoSession()
{         
    _mongo = Mongo.Create("connString");      
} 

public void Dispose()
{
    _mongo.Dispose();
}

Je suis un peu inquiet, il pourrait être tenue de connexions ouvertes trop longtemps si je fais d'autres trucs aussi dans les contrôleurs.

Est cette approche assez pour ne pas risquer de portefeuille trop grand nombre de connexions ouvertes ou devrais-je faire quelque chose de plus comme l'exemple de la méthode ci-dessous?

   public void Add<T>(T item) where T : class, new()
   {
       using (var mongo = Mongo.Create("connString"))
       {
         mongo.GetCollection<T>().Insert(item); 
       }
   }

Une autre question de suivi est:

Sont l'ouverture et la fermeture MongoDB connexions grâce à la Norme "cher" opérations?

  • La norme est guère plus maintenu, si vous voulez le support LINQ aller avec officiel mongo pilote avec FluentMongo sur le dessus de cela.
  • À côté de cette question de l'ouverture et de la fermeture des connexions sur le code, j'ai eu des problèmes avec le fournisseur d'accès internet fermeture des connexions, puis mon code EndOfStreamException. Je l'ai résolu en utilisant les paramètres.MaxConnectionIdleTime = TimeSpan.FromSeconds(30); stackoverflow.com/a/44606284/194717
InformationsquelleAutor Kimpo | 2012-02-07