0

HTTP経由でサーバーにメッセージを送信するクライアントサーバーのセットアップがあります(WindowsサービスとしてホストされているWCFサービスを使用しています)。現在のセットアップでは、クライアントとサーバー間の接続がダウンするといくつかのメッセージが失われることがわかりました、信頼性のために、MSMQ を使用することにしました。そのため、クライアントはメッセージをキューに送信し、サーバーはキューを継続的にポーリングします。開発する前に、いくつかの設計上の決定を行う必要があります。Windowsサービスまたはwcfサービス(Windowsサービスとしてホストされる)のどちらが最善の策でしょうか?

キューからメッセージを継続的に読み取り、何らかの処理を行うだけのサービスを開発する必要がある場合、WCF が持つ Windows サービス以外に利点はありますか。

4

1 に答える 1

1

MSMQ と直接統合するコードを記述することは避け、その代わりに既存のサービス バス (NServiceBus や MassTransit など) を使用することをお勧めします。ローリング独自のメッセージング レイヤーは、最も単純なシステムで機能する場合がありますが、時間の経過とともに要件が変化するため、より充実した機能のサービス バスが必要になります。前述のサービス バスは、開発者にとって使いやすい方法で次のことを行います。

  • メッセージング パターン (fire-and-forget、request-response、publish subscribe)
  • メッセージのシリアル化
  • メッセージ ルーティング
  • 失敗/再試行ロジック (つまり、メッセージ ハンドラーはデータベースを更新するはずですが、データベースがダウンしています。これをどのように処理しますか?)
  • 長時間実行されるプロセス (サガとも呼ばれる)

これらは、独自の方法で作成する場合に、間もなく作成することになるもののほんの一部です。

于 2013-06-28T18:08:01.513 に答える