0

我正在使用 StructureMap 并且我已经为 ISession 配置了HybridHttpOrLocalThreadStorage生命周期。根据请求创建新会话并将其注入控制器。

现在,我的问题是关于处置。我已经阅读了许多介绍不同方法的文章。有些人在控制器中执行此操作,有些在存储库中,有些在 http 模块中,其他人在Application_EndRequest()处理程序中执行。批评的范围从违反 SRP 到“创建对象的人应该负责其处置”等等。

所以底线是:

  • 常见的方法是手动处理这些会话 - 为什么?我已经配置了我的容器来管理特定对象的生命周期。它(即 IoC)不应该为我管理它吗?
  • 可供处置的选项是否以Application_EndRequest()“最佳”方式处理?

例如,这篇文章详细解释了一种可用的方法,但文章本身已有 2.5 年的历史。也许新版本的 StructureMap 会使大部分实现过时?

4

1 回答 1

2

如果您使用 RavenDB .net 客户端,您将使用 DocumentStore 和 DocumentSession。这两个对象都在后台做了大量的工作。本地缓存要提一件事。为了保持干净和高效,每个会话都应该在工作完成后调用 session.dispose()。documentStore.Dispose() 应该在应用程序结束时调用。

于 2012-09-03T01:50:06.607 回答