私は一般的にMongoDBとNoSQLに非常に慣れておらず、MongoDB / Norm / ASP.NETMVC3を使用してサイトを構築し始めたところです。
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接続を開いたり閉じたりしていますか?