小さな問題に遭遇しました。asp.net Web API サービスを作成し、コントローラーに「async」を自動的に追加しました。もちろん、これには await を使用する必要があります。
私が抱えている問題は、コントローラーがサービスレイヤーに接続され、このサービスレイヤーがデータレイヤーに接続されていることです-このデータレイヤーは、GETのASYNCバージョンを呼び出して別のRESTサービスへの非同期呼び出しを行うレイヤーです-だからこれは簡単です。データ レイヤー メソッドを "async" キーワードを持つように変換し、HttpClient GetSync 呼び出しに await を配置します。
しかし、非同期/待機をサポートするサービスレイヤーは、戻り値の型をタスクに変更する必要がありますが、サービスレイヤーは実際には何もしていませんASYNC実際にHttpClient非同期メソッドを呼び出しているデータレイヤーへの呼び出し。
したがって、次のレイヤー構造があることを考えると、2 つのオプションがあります。
ASP.NET Web API >> サービス層 >> データ層
データ層でのみ async と await を使用し、それで完了します。
または、コントローラーとサービス層のメソッドに async と await を配置します。Task を返す必要があるため、これにはリファクタリングが必要です。
私がそれを完全に理解していない場合、技術的に唯一のブロッキング呼び出しはデータ層にあると思います。そのため、すべてのスレッドがスレッドプールを返して使用できるようにするには、データ層に async と await を配置することだけに注意する必要があります。
コントローラーでパターンを使用する必要があるのはいつですか???
どんな助けも楽しみにしています