我在 SO 上看到了以下评论:
“在较新版本的 .Net 中使用异步等待模式将使效率更接近事件驱动架构,如 NodeJS 和 Nginx”
我继承了一个 Web API 应用程序,其中基本上所有层中的所有方法都利用异步/等待模式。上面关于 async/await 性能的评论非常引人注目。在 Web API 应用程序中的所有层的所有方法上实现 async/await 是否合适?有没有我应该避免 await/async 或小心不要过度使用它的场景?
最佳答案
我推荐阅读我的 intro to async on ASP.NET article .
Is it proper to implement async/await on all methods of all layers in a Web API app?
是的。事实上,这是势在必行的。 async
真的只有在你一直使用它的情况下才有效(就提供你从 async
中获得的好处而言)。因此,如果您的实现异步调用另一个 API,那么该方法应该被异步使用,等等,一直到您的初始 Controller 操作。
特别是,您希望避免同步异步反模式。
Are there any scenarios where I should avoid await/async or be careful to not overuse it?
是的。你应该避免“假异步”。这是开发人员使用 Task.Run
(或类似的)来获取任务以便他们可以“使用异步”的反模式。它通常看起来像这样:
int GetId() { ... }
Task<int> GetIdAsync() => Task.Run(() => GetId());
...
var id = await GetIdAsync(); // Look, I'm async! (not really)
在这种情况下,代码会损害而不是帮助您的可扩展性。
关于c# - 应该多广泛地使用异步/等待模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932014/