2016-07-22 3 views
1

私はasync/awaitパターンをかなり深く理解していないことを認めます。私はちょうどいくつかの記事を読んで、このパターンが良いという印象を得たので、私はどこでもそれを使用しました。私は非同期/待機パターンを誤用/過度に使用しましたか?

public async Task DoSomeWork() 
{ 
// some database operations... 
await ctx.SaveChangesAsync(); 
} 

そして、私の非同期コントローラのアクションメソッドで:私のサービス層は、このようなコードを詰めている私のプロジェクトのほとんどで

public async Task<ActionResult> SomeAction() 
{ 
await service.DoSomeWork(); 
return View(); 
} 

、IISサーバーとデータベース・サーバーは、同じイントラネット内にあります、同じ物理サーバ上であっても。だから私は、私は非同期を使用することから利益を得るとは思わないが、むしろその欠点に苦しんで、そのうちの1つは、開発段階で例外を表示していないと私は何千回も経験したデバッグ中にコードの行を待つだけの応答、例外、休憩なし。

したがって、非同期/待機パターンを誤って使用したり、過剰に使用したりしますか?

答えて

2

Asyncは、2つの点で優れています。UIアプリケーションでは、asyncは応答性を提供します。 asyncはサーバーアプリケーション上でスケーラビリティを提供します。

ASP.NETサーバーの場合、非同期を使用するかどうかの問題は、一般に、バックエンドのスケーラビリティに関係します。これはほとんどの場合、ボトルネックとなるのはデータベースサーバーだからです。バックエンドがスケーラブル(NoSQLなど)の場合、Webサーバーでasyncを使用するのが一般的です。しかし、あなたがbakendとしてSQLサーバの単一インスタンスを持っているなら、非同期Webサーバは通常意味がありません。