0

n 層アプローチを使用して設計された Web サイトがあります。私が抱えている問題は、クライアントがアプリケーション層を呼び出す必要があることです。他の層の 1 つは、世界のどこかにある別の Web サービスを呼び出します。他のWebサービスが戻ってくるまでに時間がかかる可能性があるため、可能であれば、非同期リクエストを使用して次のようなことをしたいと思います: 非同期リクエストの簡単な図

クライアントは HTML と JavaScript であり、サーバー レイヤーは C# (.NET 4.5) で記述されています。サード パーティの Web サービスは、私が使用する必要がある Web サービスです。

これを書いてみたらどうですか?どんな助けでも大歓迎です

4

2 に答える 2

0

サーバー側のコードが外部サービスを非同期的に呼び出す必要があるようには見えません。私はそれをすることの利点を見ていません。

もちろん、クライアント側のコードはサーバー側のコードを非同期的に呼び出します。(たとえば、jQuery を使用する AJAX 要求。) そして、その応答を処理する前に、そのサービスからの応答を非同期的に待機します。ただし、このリクエストのサーバー側コードはその 1 つのリクエストのみを処理するため、同期的に処理できます。

実際、サーバー側のコード自体も非同期である場合は、クライアント側のコードに何か有用なものを与える直前に、制御をクライアント側のコードに返します。つまり、クライアント側の非同期ハンドラーは何もできません。代わりに、サーバー側のコードが外部サービスから応答を受け取ると、その応答をクライアント側のコードにプッシュする必要があります。これは websocket などで可能ですが、おそらくこの状況よりもはるかに複雑です。

非同期のユーザー エクスペリエンスを提供するために、チェーンの最初のリンクのみが非同期である必要があり、システムの残りの部分は非同期である必要はありません。

于 2013-09-12T14:54:25.410 に答える
0

「クライアント/サーバー」境界がある場合は常に、サーバーを非同期にするオプションと、クライアントを非同期にするオプションがあります。それらの決定は独立しています。

サードパーティの Web サービスがスケーラブルである、またはサーバーがこの 1 つの要求以外に行うべきことがあると仮定します。その場合、サーバーを非同期にすることをお勧めします。

非同期プログラミングは、ASP.NET 4.5ではasync/を使用するのが自然です。awaitサード パーティのサービスによってはHttpClientasync互換性のある WCF または Web サービス プロキシを使用することもできます。ASP.NET MVC と WebAPI はどちらも、サービスの非同期呼び出しをサポートしています。

クライアント側では、選択の余地はありません。ブラウザの JavaScript は非同期である必要があります。

于 2013-09-12T15:18:32.453 に答える