WebAPIマイクロサービスを作成していて、async
を使用する利点があるかどうか疑問に思っています。このサービスは、Entity Frameworkを使用してSQLデータベースを呼び出します。シングルスレッドアプリケーション用の非同期の利点
同期:
using(var db = new Entities())
{
var user = db.Users.FirstOrDefault();
user.IsActive = false;
db.SaveChanges();
}
非同期:
using(var db = new Entities())
{
var user = await db.Users.FirstOrDefaultAsync();
user.IsActive = false;
await db.SaveChangesAsync();
}
私が見てきたasync
のいくつかのユースケースとは異なり、awaitableサブタスクとキックオフの間で行わ何も処理はありませんawait
(これはおそらく文字通りではないが「シングルスレッド」)からのサスペンションです。
質問はです。リソースの観点から見ると、これは同期代替とどう違うのですか?それがコントローラ全体を通して非同期であると仮定すると、サービスの拡張性は向上するでしょうか?
ボーナスポイント:他の非同期アプリケーションで同期ブロッキングを実行した場合の影響(たとえば、開発者が非同期メソッドを使用することを忘れた場合)
「非同期」とはどういう意味ですか? –
結果の代わりにタスクを返す。 「コントローラ全体を通して」とは、タスクが.Resultまたは.Wait()で呼び出されないことを意味します。 –