在WCF上下文之外使用PerWcfSession生活方式组件

时间:2018-04-17 22:39:53

标签: .net dependency-injection castle-windsor

我们正在使用Catle Windsor作为DI conatiner。

我们有处理wcf请求的服务器,因此我们使用 PerWcfSession 生活方式注册了注入我们的存储库的DbContext,以便在每次请求后处理该上下文。

在同一台服务器上,我们有另一个线程单独运行来进行一些调度工作,我们希望这个调度程序使用我们拥有的一个存储库,但问题是我们不能重用这个存储库,因为他的Db​​Context是PerWcfSession生活方式和调度程序线程不是WCF请求\响应流的一部分。

我想也许在那种情况下我们需要单独的容器用于那个单独的线程,但我不确定。

任何想法?

1 个答案:

答案 0 :(得分:1)

我心中几乎没有选择:

  • 将您的WCF服务和调度程序分离到单独的进程,这样 你将最终得到单独的单独的应用程序 容器和不同的组件生活方式。此外,你会 受益于微服务架构,并有专业人士喜欢不同的要求 可伸缩性等(当然也有缺点)。
  • 正如您所说,您可能只有一个包含多个容器的进程 对于每个线程。
  • 拥有一个容器的一个流程,但每个具有不同生活方式的组件都有多个注册。您必须使用服务覆盖来指定特定注册所属的位置(请参阅https://github.com/castleproject/Windsor/blob/master/docs/registering-components-one-by-one.md服务覆盖部分)。