在asp.net应用程序中打开/关闭连接的好习惯?

时间:2012-07-06 06:27:04

标签: asp.net database performance oracle

我一直在使用ASP.net中的Web应用程序。我的应用程序有几个页面,所有页面都需要显示由数据库填充的表。现在我正在做的是,在每个页面上,我打开一个数据库连接,执行特定于该页面的查询,并关闭数据库连接。因此,每当用户单击链接转到新页面或单击网格页面等表单控件时,就会发生这种情况。

我想知道从性能的角度来看这是否是一场灾难。有没有更好的方法呢?

4 个答案:

答案 0 :(得分:9)

几乎普遍地,数据库连接应按如下方式处理:尽可能晚地打开,并尽快关闭。打开和关闭多个查询/更新...不要认为保持打开可以为您节省任何费用。因为连接池通常可以很好地管理连接。

在单个页面的制作中打开/关闭几个/几个连接是完全正常的。尝试在页面视图之间保持单个连接打开将非常错误 ...在任何情况下都不要这样做。

基本上,对于连接池(几乎所有提供者都默认启用),“关闭”连接实际上只是将其释放回池中以便重用。试图让自己保持开放会占用宝贵的联系。

答案 1 :(得分:3)

这正是你想要的。数据库连接只应在必要时打开,并在使用后立即关闭。

您可能希望看到的是caching,尤其是如果性能对您来说是个大问题。您可能希望缓存整个页面,或仅缓存页面的某些部分,或仅缓存您希望在页面上显示的数据。您将以这种方式节省大量数据库之旅,但您现在必须考虑其他事情,例如何时更新缓存,缓存不同用户等等。

答案 2 :(得分:3)

来自MSDN - Best Practices in ADO.Net

  

高性能应用程序保持与数据源的连接   使用最少的时间,以及利用   性能增强技术,如连接池。

您正在做的事情非常好,打开连接以执行查询,然后关闭它。如果您长时间保持连接,并且有多个人访问您的应用程序,那么您可能会用完通常在数据库上设置的连接限制。

答案 3 :(得分:2)

将数据库连接与后端代码绑定是一种不好的做法。在您学习的过程中,我建议您使用Web服务与UI进行交互,而不是将数据交互链接到UI。

像UI(Aspx页面)>> BLL(业务逻辑层)>> DAL(数据访问层)

还尝试在DAL中使用'using'关键字并在DB交互之后配置连接和所有连接