Web应用程序中Database对象的建议生命周期是多少?

时间:2014-07-09 18:51:43

标签: .net web petapoco object-lifetime

我考虑在传统的网络应用程序中使用PetaPoco。说传统我的意思是

  • 处理来自池的单独线程中的请求
  • 请求很快:没有长时间轮询,流式传输等
  • 但不一定是ASP.NET,可能是例如Nancy

Database对象的生命周期应该是什么,以及底层DbConnection的生命周期是什么?

  • 全球静态(我猜不,由于this answer
  • 每线程静态,[ThreadStatic]
  • 每个请求
  • 工作单元格式:任务完成后立即创建和处理

我特别感谢那些使用PetaPoco运行制作应用程序的人的答案。

3 个答案:

答案 0 :(得分:2)

每个请求都是要走的路

  • 全球静态:你猜对了。将带来访问相同记录集和其他记录集的问题。绝对没有。
  • 每线程静态。你应该避免在Asp.net中使用[ThreadStatic]
  • per-request:效果很好
  • 工作单位风格:它也很有效(不是我的偏好)

答案 1 :(得分:1)

每个线程需要一个对象,但是您不应该将该对象与线程本身关联,因为处理请求可以在一个线程中启动并在另一个线程中完成。

每个请求使用一个对象通常是最好的,至少对于快速请求处理。然而,这并不总是那么简单。如果您在没有处理对象的情况下冒险离开(例如,如果有例外),最好将一个对象用于有限的任务,以确保正确处置它。

答案 2 :(得分:1)

数据库是一个便宜的对象,所以我只需要根据需要创建它。我在繁忙的网络应用程序中使用PetaPoco(或者更具体地说是AsyncPoco所以我不会在I / O绑定工作期间绑定线程)这对我来说很有用。 Others do prefer per-request但是,这也应该有效。