2014-10-09 65 views
4

我正在寫一個訪問遠程MongoDB的C#應用​​程序。如何在查詢數據庫時繼續保持連接?我應該實施某種開放/關閉機制嗎?或者連接一次並暫停是否會更好?我正在使用官方的MongoDB/C#驅動程序。C#/ MongoDB:我如何保持連接活着?

回答

4

在引擎蓋下,MongoDB C#驅動程序維護一個連接池,這在.NET中相當典型。游泳池的工作原理是爲您保留一些開放的連接。當你需要連接時,游泳池會給你一個現有的連接(只要有一個連接可用)。

要避免的問題是連接中的泄漏 - 如果連接打開並且不再關閉,那麼您將破壞連接池的收益,並且每次都需要打開一個附加連接。此外,如果存在連接泄漏,則有可能會在客戶端以及服務器上消耗額外的資源。

+0

嗨,謝謝你的回答,只有一個問題:當你不關閉連接時會發生什麼?他們最終會超時嗎? – 2014-10-09 16:38:25

+0

如果連接保持打開狀態並且永遠不會垃圾收集,那麼它將在後臺保持空閒狀態,永遠不會被釋放。很多時候你會很幸運,並且你沒有明確關閉的關係會被清理乾淨 - 但是,當你被泄漏幾次後,你會更加小心地確保關閉,處置和垃圾收集。留下的對象是.NET – STW 2014-10-09 16:51:52

+2

中資源泄漏的最常見原因:使用''和'try/catch/finally'是你的朋友 – STW 2014-10-09 16:53:54