【问题标题】:Automatically Select Per-Thread or Per-Request Lifetime Scopes自动选择每个线程或每个请求的生命周期范围
【发布时间】:2013-06-19 15:02:45
【问题描述】:

我正在开发一个库,该库在我的公司内部分发并供各种应用程序使用。该库必须与平台无关,因为它可以部署在 Web 上下文中,甚至可以部署在控制台应用程序中。我想将对象注册为 per-http-request 或 per-thread,具体取决于使用此框架的应用程序的上下文。在 StructureMap 中,我可以使用 Hybrid 生命周期来做到这一点。本质上,如果 HttpContext 存在,那么对象将被限定为该对象,否则 ThreadLocalStorage 将在每个线程的基础上使用。分布式库或消费应用程序不需要额外的配置。这可能使用 Autofac 吗?鉴于我们的开发人员技能水平参差不齐,我们的目标是尽量减少/消除针对消费者的任何专门配置。

我了解注册可以使用 InstancePerLifetimeScope 生命周期与上下文无关,但随后需要使用应用程序才能使用 ASP.NET/WCF/MVC 集成二进制文件才能将 InstancePerLifetimeScope 注册绑定到 Http要求。或者,对于每线程范围,消费代码需要负责创建lifetime scope per thread

有什么建议吗?

【问题讨论】:

  • Autofac 支持自定义生命周期,你不能这样模拟 StructureMap 的 Hybrid 生命周期吗?

标签: autofac


【解决方案1】:

很容易实现自己的生命周期管理器,它会检查“HttpContext.Current!= null”,然后委托给现有的管理器之一。

不过,我建议每个应用程序自行连接适当的管理器。一个示例是单元测试场景,其中“HttpContext”可能不存在,因为它被模拟了,您可能希望手动控制生命周期以用于特定的测试目的。

猜你喜欢
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2018-06-19
相关资源
最近更新 更多