我有一个 wcf ServiceHost,它必须向 IBus 发布消息。
如何从主机类(由 wcf 实例化)优雅地获得对 IBus 的访问权限?
我有一个 wcf ServiceHost,它必须向 IBus 发布消息。
如何从主机类(由 wcf 实例化)优雅地获得对 IBus 的访问权限?
这应该更干净地为您提供对 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;
}
}
}
我们所做的(可能有更简洁的方法)是我们有一个实现 IWantToRunAtStartup 的类。我们给该类一个 IBus 属性,该属性由 NServiceBus 中内置的 DI 容器初始化。
然后我们实例化我们的 Web 服务类(具有 ServiceBehavior 属性的那个),从启动类传入 IBus 实例。然后我们从该实例中实例化我们的 ServiceHost。
感觉有点笨拙,但我们没有遇到任何麻烦。希望有帮助。