web-dev-qa-db-ja.com

Data Repositoryに非非同期メソッドを配置する場所はまだありますか?

.NET Core 3.0プロジェクト今日、データベース接続を使用します(たとえばASP.NET Core Web API)、データベースとの通信中に非同期操作を行う場所はまだありますか?

または言い換えると、データベースを直接クエリしている間、常に(デフォルトで)Data Repositoryメソッドでasync/awaitを使用する必要がありますか? ToListAsyncFirstOrDefaultAsyncを使用して話しているのですか?

データベースとの通信中に非同期操作を使用しないことの利点を見つけるのに苦労しています。

1
Adam Wojnar

非同期のポイントは、より遅いサービス/デバイスが応答するのを待っている間、スレッドが他の作業を実行できるようにすることです。

それであなたのスレッドは他の仕事をするのに必要ですか?

  • そうであれば、async/awaitはスレッドを解放する1つの方法です。
  • そうでない場合は、async/awaitを使用してもシステムはより複雑になり、実際のメリットはありません。
1
Kain0_0

限られた数のスレッドによる高速アクセスが必要な場合は、非同期でデータベースにクエリを実行するほうが高速です。ただし、スレッドを高速で消費するため、追加のパフォーマンスが必要で、メソッドが1つまたは2つのスレッドでのみ使用されることがわかっている場合にのみ使用してください。

バックグラウンドワーカーなどのように、Web APIメソッドからnone非同期メソッドを使用すると、多くのクライアントが接続し、そのWeb APIメソッドを使用するときに、スレッドプールのスレッドが不足します。

0
Anders