【问题标题】:Should I be using async/await in WEB API on the server?我应该在服务器上的 WEB API 中使用 async/await 吗?
【发布时间】:2021-06-25 14:23:53
【问题描述】:

所以我正在使用 .NET 5 编写一个 WEB API,我开始使用类似的东西来获取我的数据:

    public ProfileModel Get(string email)
    {
        using (JobsDB data = new JobsDB())
        {
            return data.Profiles.Where(x => x.Email.ToUpper() == email.ToUpper()).FirstOrDefault();
        }
    }

但我刚刚看到一篇文章让我觉得我应该像这样使用 async/await 来编写它:

    public async Task<ProfileModel> Get(string email)
    {
        using (JobsDB data = new JobsDB())
        {
            return await data.Profiles.Where(x => x.Email.ToUpper() == email.ToUpper()).FirstOrDefaultAsync();
        }
    }

现在我意识到,当客户端应用程序调用 WEB API 时,他们会以异步方式(在他们的 JavaScript 代码中)这样做,所以我一直认为 WEB API 本身不必使用异步方法。那么在 WEB API 本身中使用 async/await 有真正的优势吗?这样做是否被视为“最佳实践”?

【问题讨论】:

  • 有大量的博客讨论何时使用异步编程。重要的是不要将所有异步调用都误认为是新的线程调用。您想要执行异步等待的常见领域是 I/O、数据库操作等。您最好查看指南和博客以获取此信息,而不是更多关于特定编码问题的 StackOverflow。

标签: asynchronous asp.net-web-api .net-core async-await


【解决方案1】:

是的,根据this Microsoft 的文章,让您的 API 端点异步是一个最佳实践。

异步操作允许“优化”请求处理中涉及的线程数量,方法是让同一个线程处理另一个请求,而前者在await(更多细节here)下。

另外,您可以阅读this 文章以了解return await Taskreturn Task 之间的区别(有一个重要的区别)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多