ADO.NET中网站与Windows服务共用连接字符串时是否共享连接池?
ADO.NET中网站与Windows服务是否共享连接池?
嘿,这个问题问到点子上了,直接给你明确结论:不会共享同一个连接池,原因主要有这两点:
连接池是进程级别的资源:ADO.NET的连接池是和进程绑定的,网站通常运行在IIS的工作进程(比如
w3wp.exe)里,而Windows服务是一个完全独立的Windows进程(比如你自己命名的服务进程)。这两个进程拥有各自独立的内存空间,所以它们的连接池是完全分开维护的,哪怕连接字符串一字不差也没法共享。额外提下连接池的匹配规则:就算是同一个进程内,也需要连接字符串完全一致(包括参数的拼写、大小写,甚至某些等价参数的写法,比如
Integrated Security=True和Trusted_Connection=True会被视为不同的连接字符串,从而创建不同的连接池),但这里的核心矛盾是进程隔离,所以跨进程根本没机会共享。
简单说就是:两个不同进程,哪怕用一样的连接字符串,各自的连接池都是“私有”的,互相不搭边。
内容的提问来源于stack exchange,提问作者psb




