Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该在哪里从WCF服务打开到MongoDB的连接_C#_Mongodb_Wcf - Fatal编程技术网

C# 我应该在哪里从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"); 我应该在每种方法或一些常见的地方都包含这些行吗?一般来说,你应该避免重用连接,让框架为你做——基本上,让框架处理连接池,不要试图妨碍它。

我正在编写一个WCF应用程序,它将在后端使用MongoDB。我不知道该把这些线放在哪里

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线程安全吗

大多数时候,我希望看到这些类型的初始化在构造函数中被调用,或者在某个地方以惰性的方式被初始化