c# - ASP.NET 网络 API : any downsides to asynchronous operations?

标签 c# asynchronous asp.net-web-api

我正在设置一个 Web API,它将通过我们的 Intranet 为客户端提供服务。为了方便在客户端工作的开发人员,我正在考虑让 Web API 遵循将与客户端共享的接口(interface),如下所示。

使用共享 接口(interface)的目的主要是为了让客户端开发人员在编译时检测到对 Web API 的更改。此外,客户端可以利用接口(interface)来包装 HttpClient 实例,这些实例将用于与 Web API 通信。

客户端开发人员希望在整个实现过程中使用 asyncawait,我有什么资格说“不”?

public interface IValueController
{
    Task<string> ReadAsync();
    string ReadSync();
}

[Route("api/v1/[controller]")]
public class ValueController : Controller, IValueController
{
    [HttpGet("async")]
    public Task<string> ReadAsync()
    {
        return Task.FromResult("async!");
    }

    [HttpGet("sync")]
    public string ReadSync()
    {
        return "sync!";
    }
}

我对同时提供同步和异步方法不太感兴趣 - 必须其中之一。问题是:将 Web API 操作定义为异步操作有什么缺点吗?如果没有,我会全力以赴!

-S

最佳答案

何时使用异步:

  1. 异步 API 调用。
  2. 长时间运行的数据库查询。
  3. 受 CPU 限制的任务。
  4. 当您需要实现并行性时。

何时不使用:在编写任何快速运行的任务或方法时。

注意:当心死锁,因为编译器允许您编写并成功编译异步代码,即使不了解它的基本概念也是如此。

关于c# - ASP.NET 网络 API : any downsides to asynchronous operations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732905/

相关文章:

c# - 集成测试 C# WebAPI asp.NET Framework 4.6.1

c# - 绑定(bind)中的 SpecFlow 歧义

c# - 如何使用 ASP.NET Identity Framework 设置密码过期

reactjs - React - 有什么方法可以取消(或忽略) 'OnChange' 处理程序上的异步操作吗?

jquery - 如何执行多个 ajax 调用并在每次调用后更新 ui

asp.net - 清除缓存后,set-cookie 不适用于 IE11/10

c# - BeginRouteForm 不适用于 API 路由?

c# - ASP.NET MVC - 路由 - 具有文件扩展名的操作

javascript - 如何从异步调用返回响应?

javascript - 如何从 angularJs 连接 signalR