2

我有一个 wcf ServiceHost,它必须向 IBus 发布消息。

如何从主机类(由 wcf 实例化)优雅地获得对 IBus 的访问权限?

4

2 回答 2

2

这应该更干净地为您提供对 IBus 的访问。随意命名静态类。不要担心共享 IBus 实例 - 总线是完全线程安全的。

public static class BusAccess
{
    private static IBus bus;

    public static IBus Bus
    {
        get
        {
            if (bus == null)
                bus = NServiceBus.Configure.Instance.Builder.Build<IBus>();
            return bus;
        }
    }
}
于 2011-08-11T21:40:44.750 回答
0

我们所做的(可能有更简洁的方法)是我们有一个实现 IWantToRunAtStartup 的类。我们给该类一个 IBus 属性,该属性由 NServiceBus 中内置的 DI 容器初始化。

然后我们实例化我们的 Web 服务类(具有 ServiceBehavior 属性的那个),从启动类传入 IBus 实例。然后我们从该实例中实例化我们的 ServiceHost。

感觉有点笨拙,但我们没有遇到任何麻烦。希望有帮助。

于 2011-08-11T11:34:25.807 回答