【问题标题】:Good practice to open/close connections in an asp.net application?在 asp.net 应用程序中打开/关闭连接的好习惯?
【发布时间】:2012-07-06 14:26:27
【问题描述】:
我一直在 ASP.net 中开发一个 Web 应用程序。我的应用程序有几个页面,所有页面都需要显示由数据库填充的表。现在我正在做的是,在每个页面上,我打开一个数据库连接,执行特定于该页面的查询,然后关闭数据库连接。因此,每次用户单击链接以转到新页面或单击表格控件(如网格页面)时都会发生这种情况。
我想知道从性能的角度来看这是否是一场灾难。有没有更好的方法来做到这一点?
【问题讨论】:
标签:
asp.net
database
performance
oracle
【解决方案1】:
几乎普遍地,数据库连接应该按如下方式处理:尽可能晚地打开,并尽快关闭。打开和关闭多个查询/更新......不要认为让它打开可以为您节省任何东西。因为连接池通常可以很好地帮助您管理连接。
在单个页面的制作中打开/关闭几个/几个连接是非常好的。尝试在页面视图之间保持单个连接打开会非常糟糕...在任何情况下都不要这样做。
基本上,通过连接池(几乎所有提供程序默认启用),“关闭”连接实际上只是将其释放回池以供重用。试图让自己保持开放会束缚宝贵的联系。
【解决方案2】:
这正是你想要的样子。数据库连接只应在必要时打开,并在使用后立即关闭。
您可能想要查看caching,尤其是在性能对您来说是个大问题的情况下。您可能想要缓存整个页面,或者只是页面的一部分,或者只是您希望在页面上显示的数据。通过这种方式,您将节省大量的数据库访问,但您现在必须考虑其他事项,例如何时更新缓存、为不同用户缓存等。
【解决方案4】:
将数据库连接绑定到后端代码是一种不好的做法。在您学习的过程中,我建议您使用 Web 服务与 UI 进行交互,而不是将您的数据交互链接到 UI。
点赞 UI(Aspx 页面) >> BLL (业务逻辑层)>> DAL (数据访问层)
还可以尝试在 DAL 中使用 'using' 关键字并在 DB 交互后处理连接和所有操作