2014-10-09 69 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