私は既存のC#ASP.NET MVC Webアプリケーションを使用していますが、非同期を作成するかどうかを決定できない機能を追加しています。コントローラメソッドを非同期にするか、同期させますか?
今のところ、アプリケーションのホームページではページが処理され、ユーザーがログインします。それ以上のことは何も起こりません。
ホームページにアクセスしたときに識別子を取得し、ホームページのHTMLタグに返すデータベースを呼び出しているWeb APIの呼び出しを生成する機能を追加しています。この識別子は、ソース/ HTMLビューでのみ表示されます(さまざまな内部トラッキングの目的で追加されています)。
Web API /データベース呼び出しは単純で、識別子を取得してコントローラに返すだけです。それにもかかわらず、私はアプリがこの呼び出しを非同期的に行うべきかどうか疑問に思っています。ウェブサイトのトラフィックは膨大ではありませんが、私はまだ並行性、パフォーマンス、将来のスケーラビリティについて疑問を抱いています。
私がActionMethod全体を非同期にしなければならないということは、その影響がどのようなものか分かりません。現時点で同期パターンの基本パターンは次のとおりです。
public ActionResult Index()
{
var result = GetID();
ViewBag.result = result.Data;
return View();
}
public JsonResult GetID()
{
var result = "";
var url = "http://APIURL/GetID";
using (WebClient client = new WebClient())
{
result = client.DownloadString(url);
}
return Json(result, JsonRequestBehavior.AllowGet);
}
async/awaitキーワードを使用できる場合は、常にasyncを使用してください。レガシーパターンを使用する必要がある場合は、現在のスケーリングの問題がないかぎり、それを使用しないでください。これは、獲得したレベルを超えて複雑さのレベルを上げます。 – MatthewMartin