什么是管理在ASP.Net MVC的MongoDB连接的正确方法?(What is the righ

2019-07-29 02:06发布

什么是管理MongoServer类生命周期中的最佳做法? 我应该创建一个,并在每个请求结束关闭它,还是应该保留,作为使用像StructureMap应用的整个生命单身?

任何帮助是赞赏。

Answer 1:

在官方的文件中指出, MongoServerMongoDatabaseMongoCollection是线程安全的,并且你应该建立一个单一的MongoServer为每次连接到数据库。

因此, MongoServerMongoDatabaseMongoCollection可以安全地被构造成单件。 MongoServer甚至将有助于返回相同的强制执行本MongoDatabase为连续调用实例, MongoDatabase会做同样的事情MongoCollection秒。

即你MongoServer实例可以安全地被配置为具有一个单的生活在你的IoC容器,你还不如设立注射MongoDatabase ,甚至MongoCollection为好。

我使用这种策略与温莎自己-你可以看到我MongoInstaller这里: https://gist.github.com/2427676 -它可以让我的班先走一步,这样做:

public class SomeClass
{
    public SomeClass(MongoCollection<Person> people)
    { ... }
}

为了有一个集合注入,美观大方,并准备使用。



Answer 2:

C#的自动管理与服务器的连接(它使用一个连接池)。 有没有需要调用server.Connect的驱动程序会自动连接。 不要叫server.Disconnect为关闭连接池中的所有连接和有效的连接池干扰。

至于管理MongoServer实例的生命周期你可以随意将其存储在一个静态变量,并用它为您的流程的生命周期(以及在线程之间共享,它是线程安全的)。 或者,你可以再次调用MongoServer.Create每当你需要得到服务器实例。 只要你不断的打电话MongoServer.Create用相同的连接字符串,你会越来越背面,同样MongoServer实例。



Answer 3:

注入它使用任何IOC容器(structuremap,温莎等),并保持其寿命是每个请求的基础。



文章来源: What is the right way to manage MongoDB connections in ASP.Net MVC?