只等待调用异步类,它有意义吗?

时间:2018-04-11 01:26:45

标签: c# asp.net-core

我被分配到一个已经运行的新项目。我注意到人们使用async方法创建了所有存储库类,并且每次都使用await在控制器中调用它们,因此它们基本上用作同步代码。

将来不可能异步调用它们并且服务器运行单个SQL Server实例。

它来自一种种子API项目,创建它的人不再在公司,现在没有人确切知道它们为什么async。但我认为在当前的项目场景中,根本不需要它们async,它只会给系统增加不必要的复杂性。

在这种情况下,让它们async有意义吗?

1 个答案:

答案 0 :(得分:6)

您将“同步”与“串行”混淆。同步意味着“阻止线程”;连续意味着“一次一个”。

  

每次都会在控制器中调用它们,因此它们基本上都是同步代码。

不,它们是异步和串行调用的。这里的关键是在检索数据时不阻止ASP.NET请求线程。这helps your web server scale

  

服务器运行一个SQL Server实例。

根据我对该体系结构的体验,大多数时候单个SQL服务器实例将充当您的可伸缩性瓶颈。所以在这种情况下,async对任何事都没有帮助,因为您的Web服务器现在可以扩展,但它仍然会受到数据库后端的限制(同样,在大多数情况下) )。

至于你没有问过的问题(“让它们全部同步是否有意义?”),我会说不。为什么即使你可以,故意让网络服务器的可扩展性降低?如果您有可能在将来转移到可扩展的后端(例如,Azure SQL或SQL Server群集),那么您将需要Web服务器可伸缩性。