我有一个wcf ServiceHost,它必须向IBus发布消息。
如何从主机类(由wcf实例化)优雅地访问IBus?
答案 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。
感觉有点笨拙,但我们没有遇到任何麻烦。希望有所帮助。