NServiceBus和wcf ServiceHost

时间:2011-08-10 13:29:40

标签: wcf nservicebus servicehost

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

如何从主机类(由wcf实例化)优雅地访问IBus?

2 个答案:

答案 0 :(得分: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;
        }
    }
}

答案 1 :(得分:0)

我们做的事情(可能有更清洁的方式)是我们有一个实现IWantToRunAtStartup的类。我们为该类提供一个IBus属性,该属性由内置于NServiceBus中的DI容器初始化。

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

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