我有来自多个不同域的处理程序的服务。每个域都是自包含的,我想为每个域使用StructureMap child container来隔离某些依赖项(特别是Entity Framework' DbContext)。请注意,NServiceBus调用子容器的是StructureMap称之为nested container的内容;嵌套容器管理生命周期(通常基于每个请求),而子容器允许不同的域共享在父容器中注册的依赖项,同时在子容器中注册覆盖或冲突的依赖项。
有什么方法可以让这个服务使用NServiceBus正确注册每个子容器吗?
我在其他地方看到的解决方法是使用单个容器,避免在启动时注册冲突的依赖项。相反,瞬态容器(NServiceBus'"容器/结构映射"嵌套"容器)直接注入处理程序,处理程序注册它需要的任何依赖项。我真的希望尽可能避免这种方法,但是,因为找到适当的依赖关系需要相对昂贵的扫描,并且我想在启动服务时执行一次扫描,而不是每次事件或命令都是接收。
我还希望将所有处理程序保留在同一服务中。我已经拥有大量域名并希望稍后添加更多域名,因此每个域构建一个服务需要创建或许可架构来管理所有生成的服务。没有一个域收到很多消息;我们的测试表明,单个服务应该能够处理所有工作负载。