2

IBusにメッセージを公開する必要があるwcfServiceHostがあります。

ホストクラス(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を実装するクラスがあることです。そのクラスに、NServiceBusに組み込まれているDIコンテナによって初期化されるIBusプロパティを指定します。

次に、Webサービスクラス(ServiceBehavior属性を持つクラス)をインスタンス化し、スタートアップクラスからIBusインスタンスを渡します。次に、そのインスタンスからServiceHostをインスタンス化します。

少しぎこちない感じがしますが、問題はありません。お役に立てば幸いです。

于 2011-08-11T11:34:25.807 に答える