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