我在寫一個將在後端使用MongoDB的WCF應用程序。我很困惑把這些線放在哪裏。我應該在哪裏打開從WCF服務連接到MongoDB
var connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var db = client.GetDatabase("Test");
我應該包括在每一個方法或一些共同的地方,這些線路?
我在寫一個將在後端使用MongoDB的WCF應用程序。我很困惑把這些線放在哪裏。我應該在哪裏打開從WCF服務連接到MongoDB
var connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var db = client.GetDatabase("Test");
我應該包括在每一個方法或一些共同的地方,這些線路?
一般來說,你應該避免重用連接,讓框架爲你做 - 基本上,讓框架處理連接池並且不要妨礙它。我對Mongo並不十分確定,但在ADO.NET中使用這種模式的其他領域確實如此,並且由於MongoClient
支持池化,所以我認爲在這裏也是如此。
假設Mongo實現正常工作,它會自動爲您重用和回收連接 - 您不必擔心代碼中的連接。相反,你應該考慮如何圍繞連接池設置你的settings,並考慮你的WCF服務是如何設計的(單例?單個會話?單個呼叫?)。
所以答案是:該代碼段應出現無處不在,你就需要連接,雖然的connectionString可能應該存儲在一個地方(如app.config
或web.config
)。
這真的取決於您的服務應用程序的體系結構。
這方面的一個重要方面是如何處理連接失敗和/或突然中止的情況?你將如何處理重新連接?
如上所述,什麼是您的服務的InstanceContextMode和ConcurrencyMode?另外:是MongoClient線程安全嗎?
大多數情況下,我期望看到這些類型的初始化在構造函數中被調用,或者在它以懶惰的方式初始化的地方。