什么是管理MongoServer类生命周期中的最佳做法? 我应该创建一个,并在每个请求结束关闭它,还是应该保留,作为使用像StructureMap应用的整个生命单身?
任何帮助是赞赏。
什么是管理MongoServer类生命周期中的最佳做法? 我应该创建一个,并在每个请求结束关闭它,还是应该保留,作为使用像StructureMap应用的整个生命单身?
任何帮助是赞赏。
在官方的文件中指出, MongoServer
, MongoDatabase
和MongoCollection
是线程安全的,并且你应该建立一个单一的MongoServer
为每次连接到数据库。
因此, MongoServer
, MongoDatabase
和MongoCollection
可以安全地被构造成单件。 MongoServer
甚至将有助于返回相同的强制执行本MongoDatabase
为连续调用实例, MongoDatabase
会做同样的事情MongoCollection
秒。
即你MongoServer
实例可以安全地被配置为具有一个单的生活在你的IoC容器,你还不如设立注射MongoDatabase
,甚至MongoCollection
为好。
我使用这种策略与温莎自己-你可以看到我MongoInstaller
这里: https://gist.github.com/2427676 -它可以让我的班先走一步,这样做:
public class SomeClass
{
public SomeClass(MongoCollection<Person> people)
{ ... }
}
为了有一个集合注入,美观大方,并准备使用。
C#的自动管理与服务器的连接(它使用一个连接池)。 有没有需要调用server.Connect的驱动程序会自动连接。 不要叫server.Disconnect为关闭连接池中的所有连接和有效的连接池干扰。
至于管理MongoServer实例的生命周期你可以随意将其存储在一个静态变量,并用它为您的流程的生命周期(以及在线程之间共享,它是线程安全的)。 或者,你可以再次调用MongoServer.Create每当你需要得到服务器实例。 只要你不断的打电话MongoServer.Create用相同的连接字符串,你会越来越背面,同样MongoServer实例。
注入它使用任何IOC容器(structuremap,温莎等),并保持其寿命是每个请求的基础。