私のシステムは、個別のハンドラーでコマンドパターンを使用しています。私のコマンドは、現在処理中のすべてのコマンドを処理するCommandServiceで実行されます。
遅い操作であるこれらのことの少なくとも1つを実行する特定のコマンドがあります:
- メールを送信します
- PDFを生成します
- ファックスを送信します
- サードパーティのWebサービスと対話します
UIがよりスッキリするように、これらのコマンドをすべてアウトプロセスで処理する必要があります。
これらのコマンドだけにメッセージングバスを使用する必要がありますか、それともインプロセスコマンドハンドラーを呼び出す必要がありますBeginInvoke()
か?
編集-追加情報
システムのユーザー数は少ないため(忙しい日に同時に100人になる可能性があります)、キューが長くなることはほとんどありません。ここでの主なことは、PDFが添付された電子メール(問題のコマンド)を送信するときにUIがブロックされる時間を短縮することです。従業員はそのコマンドを1日に何度も実行する必要があります。
BeginInvoke()
全体的な状況を念頭に置いて、私はいくつかの理由で今のところ行くつもりだと思います:
- コマンドが成功したかのように動作することを確認するには、すべてのUIインタラクションに触れる必要があります。「このドキュメントを送信する必要があります」というリマインダーはUIの複数の場所にあり、レポートが送信されるとページ全体が更新されます。
- クライアントの忙しい季節の真っ只中です(夏には年間ビジネスの50%以上を行っています)。そのため、現時点では、管理に慣れていないまったく新しいインフラストラクチャを導入するのは賢明ではないようです。 。
しかし、私が今知っていることを知っていると、新しいシステムでは、遅いコマンドには最初からサービスバスを使用し(事実上すべてのシステムが電子メールを送信する必要があります)、コマンドを同期からより簡単に切り替えることができるようにUIを設計します非同期処理に。実装では、これは基本的にすべてのPOSTがAJAXであり、成功したかのようにUIでアクションを実行することを意味します。(この例については、Facebookがコメントを処理する方法を確認してください。)