如何在简单注入器的多个实例之间共享SignalR单例



我使用IoC和Rebus的简单注入器,服务总线,调度保存在多个队列(主题)中的事件。Rebus需要为每个队列配置新的SimpleInjectorContainerAdapter

var bus = Configure.With(new SimpleInjectorContainerAdapter(container))

在这个配置阶段,既不能传递相同的简单注入器容器实例,也不能传递相同的容器适配器实例(容器会引发多个IBus注册的错误)。

我还使用SignalR作为事件处理程序之一,将事件分派给客户端。
按照SignalR配置教程,我设置了几个集线器和相关事件通知器(应用程序中的每个有界上下文一个)。使用经典的单例模式,如教程示例中所示,很容易将相同的通知器实例传递给容器的各个实例:
container.RegisterSingleton(Finishing.Notification.Notifier.Instance);

现在我想把实例创建委托给简单注入器容器(只有一个),所以我开始遵循这个教程:

        container.RegisterSingleton<Finishing.Notification.Notifier>();
        container.Register(() => GlobalHost.ConnectionManager.GetHubContext<Finishing.Notification.NotificationHub>().Clients);

问题是,通过这种方式,我将有n个通知程序实例,每个容器实例一个(非常遗憾)。

我知道我可以使用主容器作为抽象工厂来解决这个问题,但我正在寻找一个更具体的解决方案。
谢谢。

现在我想把实例创建委托给简单注入器容器

(…)

问题是这样,我将有n个实例的通知器一个每个容器实例。

所以你想为每个容器创建单例实例,但这是一个问题,每个容器持有一个实例的单例…这不是自相矛盾吗?

相关内容

  • 没有找到相关文章

最新更新