我一直在使用async
关键字编写我的Web Api控制器方法,并一路使用async
。最近,我尝试将一个方法变成同步方法,以查看它对性能的影响,但惊讶地发现它对任何其他http请求都没有阻塞影响。
举个例子-
[Route("Foo")]
class FooController {
[HttpGet("Hello")]
public string GetHello()
{
Thread.Sleep(100000); // 100 seconds
return "Hello";
}
[HttpGet("Goodbye")]
public string GetGoodbye()
{
return "Goodbye";
}
}
我可以运行
GET
=> /Foo/Hello
,然后跟随任意数量的 GET
=> /Foo/Goodbye
,并且对于 Goodbye
端点的请求不会阻塞。最初我认为必须将 Hello 方法设置为异步方法,以便对 Goodbye 端点的请求能够立即返回。但是,将此方法设置为同步/异步都没有影响!非常困惑。Web Api 应用程序是否不需要使用异步?为什么建议使用异步?