说了这么多ADO.Net连接池的相关注释,那我们什么时候需要使用到Connection Pool呢?一般而言这应该由您的项目需求而决定。但是由于所有的额外检查都会增大ADO.net Connection Pool 对系统的开销。
如果您的项目是ASP.net/WebService 我们会建议您使用Connection Pool因为这个功能能够帮助您减少由于频繁创建连接带来的巨大系统开销。
如果您的系统是一个C/S模型结构,我们会不建议您使用Connection Pool,这是由于一般而言,在C/S这样的模型中,每一个用户都是使用自己的用户名密码去连接后台数据库,使用的都是不同的Connection String,基本不会出现频繁出现打开/关闭数据库连接的问题。#t#
实际上在C/S模型中,您可以一直使一个Connection保持open的关闭,而不Close,这样更能够提高您系统的性能,不会由于Connection Pool的额外检查而带来系统资源的消耗,同时也不必担心一直打开的Connection长时间的占用了连接,导致其他的连接无法从connection pool 及时获取到。(因为您根本就不需要使用到connection pool)。
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- this._userConnectionOptions = null;
- this._poolGroup = null;
- this.Close();
- }
- this.DisposeMe(disposing);
- base.Dispose(disposing);
- }
当连接返回pool时,它的时间和创建时间相比,如果它的存在时间超过了Connection Lifetime,它被释放。这对于新加入集群的服务器平衡是很有用的。值0可以保证连接有***时限。