在asp.net应用程序中打开/关闭连接的好习惯?
我一直在ASP.net的Web应用程序工作。我的应用程序有几个页面,他们都需要显示由数据库填充的表格。现在我正在做的是,在每一页上,我打开数据库连接,执行特定于该页面的查询,并关闭数据库连接。所以每当用户点击链接转到新页面或点击表格控件(如网格页面)时,都会发生这种情况。在asp.net应用程序中打开/关闭连接的好习惯?
我想知道从性能的角度来看这是否是一场灾难。有没有更好的方法来做到这一点?
几乎所有的数据库连接都应该按照如下方式处理:尽可能晚地打开并尽快关闭。打开和关闭多个查询/更新...不要认为打开它可以节省任何东西。因为连接池通常在管理连接方面做得非常好。
在单页制作中打开/关闭一对/几个连接是完全正确的。试图保持单个连接在页面浏览之间打开将是相当不好 ...在任何情况下都不要这样做。
基本上,通过连接池(几乎所有提供者默认启用),“关闭”连接实际上只是将其释放回池以供重用。试图让自己保持开放将会带来宝贵的联系。
这正是你想要的。数据库连接只能在需要时打开并在使用后立即关闭。
你可能想看的东西,特别是如果性能对你来说是一个大问题,是caching。您可能需要缓存整个页面,或者只是缓存页面的一部分,或者只缓存您希望在页面上显示的数据。您将节省大量的数据库出游这种方式,但你必须现在考虑其他的事情想什么时候更新缓存,缓存为不同的用户等
从MSDN - Best Practices in ADO.Net
高性能应用程序保留连接到数据源 使用时间最短,并利用性能增强技术(如连接池)的优势。
你在做什么非常好,打开连接执行查询,然后关闭它。如果您连接的时间较长,并且有多人访问您的应用程序,那么您可能会耗尽通常在数据库中设置的连接限制。
将DB连接绑定到后端代码是一种糟糕的做法。正如您正在学习的,我建议您使用web服务与UI进行交互,而不是将您的数据交互链接到UI。
像UI(aspx页面)>> BLL(业务逻辑层)>> DAL(数据访问层)
也可以尝试使用“使用”关键字在DAL和处置连接,所有的数据库交互之后
您是否足够明白地指定我应该做什么主题更多阅读? – 2012-07-14 23:26:26
如果您使用odp.net,默认行为是使用连接池,请参阅http://docs.oracle.com/html/E10927_01/featConnecting.htm#i1006393 – tbone 2012-07-06 11:28:52