IBusにメッセージを公開する必要があるwcfServiceHostがあります。
ホストクラス(wcfによって開始されます)からIBusに正常にアクセスするにはどうすればよいですか?
IBusにメッセージを公開する必要があるwcfServiceHostがあります。
ホストクラス(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を実装するクラスがあることです。そのクラスに、NServiceBusに組み込まれているDIコンテナによって初期化されるIBusプロパティを指定します。
次に、Webサービスクラス(ServiceBehavior属性を持つクラス)をインスタンス化し、スタートアップクラスからIBusインスタンスを渡します。次に、そのインスタンスからServiceHostをインスタンス化します。
少しぎこちない感じがしますが、問題はありません。お役に立てば幸いです。