我正在编写一个将在后端使用MongoDB的WCF应用程序。我很困惑把这些线放在哪里。
var connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var db = client.GetDatabase("Test");
我应该在每种方法或某些常见位置包含这些行吗?
答案 0 :(得分:0)
一般来说,你应该避免重用连接并让框架为你做 - 基本上,让框架处理连接池并且不要试图阻止它。我对Mongo并不是100%肯定这一点,但在其他使用ADO.NET模式的领域中确实如此,并且由于MongoClient
支持汇集我会假设相同的是这是真的。
假设Mongo实现正常工作,它将自动重用并回收连接 - 您不必在代码中担心这一点。相反,您应该考虑如何在连接池周围设置settings,并考虑如何设计WCF服务(单例?每个会话一次?单个呼叫?)。
答案是:代码段应该出现在您需要连接的任何位置,尽管connectionString可能应该存储在一个地方(例如app.config
或web.config
)。
答案 1 :(得分:0)
这实际上取决于服务应用程序的体系结构。
这方面的一个重要方面是,当连接失败和/或突然中止时,您将如何处理?你将如何处理重新连接?
如上所述,您的服务的InstanceContextMode和ConcurrencyMode是什么?另外:MongoClient线程安全吗?
大多数时候,我希望看到这些类型的初始化在构造函数中调用,或者以惰性方式初始化。