2011-01-12 8 views
0

ASP.NET MVC3アプリケーションにサービスを提供するために使用している静的クラスライブラリがあります。静的クラスライブラリを使用するNServiceBus

私は、非同期データベース呼び出しを提供する最善の方法を念頭に置いています。私はノードにデータを送信するアプリケーションを持っています。アプリケーションはノードが知っているすべてのノードにデータを渡します。

NServiceBus2を使用して、Webクライアントからノードメッセージを受け取ります。コントロールはWebアプリケーションに戻され、コントローラが終了してページをユーザーに返すことができます。

バックグラウンドでは、リスナーはそのメッセージをピックアップし、ノードデータベースのトロールを開始します。私はうまく動作するリスナである新しいクラスライブラリを作成しました。

私の問題は公開されています。メソッド呼び出しのたびにバスを作成する必要がありますか?バスはどこに保管できますか?私はWCFルートを試すことができると思いますか?


明確化

  • 私はそれは、Webアプリケーションから直接メッセージを高めるために素晴らしいアイデアだとは思わない - あなたはおそらくコントローラにDBコードを入れていないのと同じように。私は 'ビジネスロジック'である別のクラスライブラリを持っていたいと思います。
+0

あなたはNServiceBusを間違って使用しているようです。 – Phill

+0

Phillの理由は何ですか?私は単にすべての配線がその上にあるメッセージに反応するようにするmsgキューを必要とします。 –

答えて

0

ASP.NET WebアプリケーションからBusでメッセージを取得するには、いくつかの方法があります。まず、グローバルな場所(global.asaxなど)でBusを一度ブートストラップし、そのバスへの参照を提供します。いくつかの抽象化、典型的にはServiceAgentのようなクラスを介してバスを参照することを好む。<T>ここで、Tは内部でBus.Send()のメッセージである。 WebアプリケーションでBusをブーストする必要がない場合は、NServiceBusエンドポイントをWCFサービスとして公開することもできます。これは、WcfService < TRequest、TResponse >を実装することによって簡単に実行されます。そこから、公開されたSOAPyサービスを単に呼び出すことができます。 SOAPが気に入らない場合は、エンドポイントを別の方法で設定できます。エンドポイント内からPublish()を実行できます。

0

サービスごとにバスを作成します。サービスは、Windowsサービス、ウィンフォームアプリケーション、またはあなたの場合はWebサイトにすることができます。
ウェブサイト/ウェブサービスのシナリオでは、通常、global.asaxのapplication_startイベントでバスを作成します。

バスはコンテナ、たとえばStructureMapまたはCastle Windsorに保存できます。

メッセージを公開するwcfサービスを呼び出す代わりに、ウェブサイトから直接メッセージを公開しないでください。あなたのウェブサイトからの送信を使用してください。 nservicebusとのメッセージングのさまざまな使い方を理解してください。特にpub/subとsend/replyのシナリオの違いが必須のものを使用する場合の違いです。

他のテキストへ:私はあなたのシナリオを理解していません。さらに問題がある場合は、元の投稿を編集してわかりやすくなるようにしてください。

関連する問題