8

私は現在、アプリケーションの 1 つのコンポーネントが特定のイベントに基づいて他の複数のシステム コンポーネントと対話する必要があるアプリケーションに取り組んでいます。これらのイベントは、さまざまなトリガーに基づいて発生します。一部のイベントは、他のユーザーに通知する必要があるユーザーのアクションによって発生し、一部のイベントは時間ベースであり、他のイベントはオブジェクトの状態の変化に基づいています。

これまで見てきたことに基づいて、アプリケーション コンポーネントを分離する最もクリーンな方法は、コンポーネント内のオブジェクトが他の関心のあるアプリケーション コンポーネントをサブスクライブできるイベントをパブリッシュするパブリッシュ/サブスクライブ モデルをセットアップすることのように思えます。

nServiceBus を見たことがありますが、"vendor-lock-in" の理由により、Azure で .NET サービスを使用できません。他に利用可能な技術はありますか?私が検討すべき別のアプローチはありますか?

編集- 明確にするために、これは Web ベースの大量のアプリケーションです。アプリケーションは ASP.NET MVC であり、MVC アプリケーションはそのデータのために複数の WCF サービスと通信しています。

4

8 に答える 8

7

WCF は間違いなく pub/sub シナリオを処理できます。新しい WCF Azure リレー バインディングを備えた .NET 4 がリリースされると、さらに多くの処理が可能になります。

とりあえず、このトピックに関する次の記事をチェックしてください。

.NET Service Bus を使用した今後の Azure ベースの pub/sub メッセージングについては、次の記事を参照してください。

于 2009-12-09T20:34:34.090 に答える
3

MassTransitもあります。使用したことはありませんが、nServiceBus と同じ会話でよく言及されます。

何をしようとしているのかによって、Managed Extensibility Frameworkもあります。実際にはパブリッシュ/サブスクライブ フレームワークではありませんが、まだ知っていない場合は注意が必要です。

于 2009-12-09T20:31:32.640 に答える
2

Udi (nServiceBus の作成者) は、彼のブログでドメイン イベントの概念の合理化されたバージョンを公開しています。

これをベースとして使用して、ソリューションで使用できる nServiceBus のようなより単純な実装を開発しました。

于 2009-12-09T20:35:21.813 に答える
1

.net で従来のパブリッシュ/サブスクライブ モデルを実装するには、ActiveMQを使用します。非常に理解しやすく、すでに JMS を知っていれば、学習曲線は非常に平坦です。

于 2010-02-14T11:20:03.417 に答える
0

Prismには、緩く結合されたイベントを提供するEventAggregatorが付属しています。

于 2009-12-09T20:26:41.123 に答える
0

これまでの回答は、マルチプロセスまたは SOA アーキテクチャーを使用していると仮定した場合の適切な回答です。

単純なスタンドアロン アプリケーションの場合、組み込みの C# イベント モデルが適切に機能する可能性があります。または、デリゲートまたはインターフェイスを使用してサーバー/パブリッシャーに渡すこともできます。

このオブザーバー パターン リンクが役立つ場合があります。

于 2009-12-09T20:41:52.037 に答える
0

WCF

Google WCF パブリッシュ サブスクライブ モデル。Juval LowyによるProgramming WCFのAnnexの部分には、その方法についての優れた説明があったと思います。

EDIT http://idesign.net/idesign/DesktopDefault.aspx?tabindex=5&tabid=11
Publish-Subscribe Framework を探します

于 2009-12-09T20:25:09.847 に答える
0

「 nServiceBus、Rhino Service Bus、MassTransit - ビデオ、デモ、学習リソース」に関する SO の質問と、いくつかの適切な回答があります。

于 2009-12-09T20:46:47.243 に答える