根据 OP 在问题下的以下澄清评论:
有一个 Web 应用程序每 30 秒检查一次更改并显示最新的授权。数据库正在跟踪员工授权并经常更新。现在我正在构建桌面应用程序,它与服务器有本地连接并且可以更频繁地更新,但是客户端不希望应用程序每秒打开连接,aldo 连接打开了几毫秒。
我认为合适的解决方案是业务层。
如果您构建一个托管在 IIS 中的业务层,它代表使用单个数据库用户进行访问的用户(应用程序池用户或 Web 应用程序中的模拟用户)执行数据库访问,那么连接池将减少连接数对数据库进行了显着。
这是一篇 MSDN 文章,它非常详细地描述了连接池的机制和好处。
所有客户端,包括 Web 层,都将使用 WCF 或 .Net Remoting(取决于您的 .Net 版本)连接到业务层,而业务层将是唯一执行数据库访问的应用程序。
这种方法的额外好处是您可以将所有数据库访问(包括来自 Web 客户端的)移动到 DMZ 内,这样就不会从 DMZ 向外直接访问数据库。这对您的客户来说可能是一个很好的卖点。
我们将这种机制广泛用于非常大、非常注重安全性和性能的客户。
更新
作为替代方案,您可以让业务层每 30 秒查询一次数据库,提取必要的信息,并将其本地存储到某种数据库(Access、Sql Server Express 等)中的业务层。当收到来自客户端的请求时,将从本地数据存储而不是数据库为它们提供服务。
您可以通过在 global.asax 的 Application_Start 事件中启动后台线程或通过添加每 30 秒过期的缓存条目并在缓存超时事件中执行工作来做到这一点。
这将每 30 秒(或任何时间)将连接数减少到 1 个(如果未修改网络,则为 2 个)。