2012-01-25 3 views
0

私はチームと私が雇用しようとしているアプローチに悩まされており、問題を見る正しい方法であるかどうかはわかりません。nservicebus同期コールまたは信頼性の低い低応答時間のコールに基づく使用

問題がある:

我々はバックグラウンドで実行されている複数のWCFサービスとWebアプリケーションを持っています。プロセス1、プロセス2、プロセス3、プロセス4と考えることができます。

シナリオは、WebからのUI呼び出しからプロセス1を呼び出すというシナリオです。

プロセス1は何らかの処理を行い、正常に終了すると、NServiceBusを使用してプロセス2にメッセージを送信します。

プロセス2はそれ自身の何らかの処理を行い、次にプロセス3のメッセージを送信し、成功するとプロセス3はその呼び出しを返します。

ここで問題となるのは、私たちのWebアプリケーションから最初の呼び出しが送信され、UIが3つのサービスからの完了の応答を待っているということです。UIは応答を待つことをお勧めしますか?

NServiceBusを使用してこのような呼び出しを行うことをお勧めしますか?

上記のプロセスはユーザー登録プロセスです。そのため、ユーザーはNServiceBusからの応答を受け取るまでUIが停止するサーバーからの返信を待機します。

実際にNServiceBusの実装を検討する必要があります。

ありがとうございます!

+0

誰かがキーボードのリターンボタンを紛失しました! –

答えて

2

サービスバスまたはメッセージベースのアーキテクチャの使用を推奨していないNServiceBus経由の要求 - 応答を実行しています。

メッセージベースのアーキテクチャを利用し、システム内の他のもののPublish/Subscribeの利点が必要な場合は、登録プロセスを再考する必要があります。

あなたはそれについて考えていますが、ユーザーが結果をすぐに見る必要はないかもしれません。情報を収集して処理のために送信し、何かがうまくいかない場合は、電子メールを送信してユーザーに詳細情報を求めるか、他の操作を実行させることができます。たぶん、口座確認などの一歩かもしれません。

+0

ワークフローが必要な場合は、Sagaの実装を調べてください。私は同意する、ユーザーの通信は別のチャネルで発生する可能性があります。 –

+0

こんにちはmikael、yeap私はあなたに同意しますが、どのようにこの特定の登録プロセスを処理することをお勧めします。ありがとう – Wajeeh

+0

プロセスを複数の部分に分割できるかどうか、ユーザーが実際に結果をすぐに確認する必要があるかどうかを調べてみてください。これを非同期にするには、プロセスとそれをサポートするUXを作成する必要があります。サガはアダムの言うとおりに役立つかもしれませんが、最終的にはユーザーがそのプロセスを体験する方法になります。このプロセス内のパーツを保留状態にする方法を解説しますが、非同期処理中にユーザーが回転するAjax進捗インジケーターを見ないようにしてください。 –