MVC 5を使用してWebアプリケーションを構築していますが、実行時エラーが発生するため、PartialViewResultsでAsync/Awaitパターンを使用できません。このため、私は特定の作業を待っていません。例えばMVC 5でAsync/Awaitを使用しない場合の影響
私は私のアプリではほとんどのページで使用されてするPartialViewResultでこのヘッダーUIを持っています。
/// <summary>
/// Get UI header for trainee's main details, name, aim, score etc
/// </summary>
/// <param name="personId"></param>
/// <param name="aim"></param>
/// <param name="showScore"></param>
/// <returns></returns>
public PartialViewResult _TraineeHeaderDetails(int personId, string aim, bool showScore, bool showEvidenceLink)
{
var result = _httpService
.Get(_urlConfigurations.GetTraineeDetails + personId + "/" + aim);
if (result.StatusCode != HttpStatusCode.OK)
//TODO: NG - add proper mvc error page redirect
throw new Exception("ID not found");
//RedirectToAction("")
// use GetAwaiter to get around async/await limitation in MVC 5
var model = _jsonDeserializer.GetModelAsync<TraineeHeaderViewModel>(result).GetAwaiter().GetResult();
if (model == null) return PartialView(new TraineeHeaderViewModel());
//For link to trainee summary
model.PersonId = personId;
model.AimCode = aim;
// flag to show/hide graph
model.ShowScore = showScore;
// flag to show/hide evidence link
model.ShowEvidenceLink = showEvidenceLink;
return PartialView(model);
}
あなたが見ることができるように、私のHTTPサービスの呼び出しは、MVCアクションで、私は通常、使用場所を取得することですGetAsyncとJSON結果を逆シリアル化するときに、私は.GetAwaiter()を使用しています。GetResult();
私の質問は、これはアプリのパフォーマンスに影響しますか?それはMVCなので、私が作業しているUIスレッド(Razorでレンダリングされている値)がないので、私は何をやっているのか考えていますが、他の人がこれについて考えるのを知りたいのです。
ニック
async awaitを使用すると、非同期操作が完了するまで要求スレッドが解放されるため、IISアプリケーションプールでサーバー要求に使用できるワーカースレッドが限られています –