c# - 何时使用 async 和 wait - 客户端 vs webapi

标签 c# azure rest asp.net-web-api

我正在使用 ASP.NET Web Api 构建一个规划器,当前它在其中执行一些简单的 CRUD 操作。该 API 的主要目的之一是能够接受来自不同平台(Web 和 Android 应用程序客户端)的请求。我的问题是关于 async、await 和 web api 的最佳实践(以及什么有意义)——我应该在哪里提供异步?在客户端级别还是在 API 级别(服务器)?

我知道 async 和 wait 的主要目的之一是为 UI 提供响应能力。我知道异步模型主要涵盖 I/O 密集型或 CPU 密集型操作。我猜测从这个意义上说,我的进程将受到 I/O 限制。但就最佳实践而言,API 应该是异步的还是应该保留在客户端内?我的 api 将在 Azure 的应用服务上运行。

下面是我的 API 中的“获取”操作示例(同步而非实际代码):

[Authorize]
[Route("GetUser/{userId}")]
public IHttpActionResult GetUser(int userId)
{
    return Ok(/* method calls are done here... */);
}

我建议的异步示例:

[Authorize]
[Route("GetUser/{userId}")]
public async Task<IHttpActionResult> GetUser(int userId)
{
    return Ok(await /* method calls are done here... */);
}

我正在使用 HttpClient 向 api 发出请求。

我的期望是多人将使用该客户端。所以我假设客户端应该是异步的,而 api 可以保持同步。但同样,我试图找出这里最好的做法是什么(明智的最佳实践)。

最佳答案

既然您已经要求最佳实践,那就一直采用异步。 当您尝试使其以同步方式工作时,异步只会变得复杂(并给您带来麻烦)。一直采用异步(使用 asp.net core 很容易做到),你会做得很好。

来源:https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md

(如果 API 操作本质上不执行任何异步操作,您可以在该 API 上保留异步,但默认为异步。)

关于c# - 何时使用 async 和 wait - 客户端 vs webapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56531281/

相关文章:

c# - 为什么 System dll 在 Silverlight 和其他 C# 库中不同是有原因的

azure - 刷新访问 token 时调用自定义 REST API

azure - VSS 客户端 SDK 文档链接不可用 - https ://www. Visualstudio.com/docs/integrate/extensions/reference/client/core-sdk

zend-framework - Zend 休息 API : putAction on POST method

c# - 使用表达式组合具有不同签名的函数

c# - 从表中仅选择几列

javascript - 为 mongodb REST API 编写通用查询函数

Restassured 测试错误 - No Content-Type was specified in response

c# - 如何在 WPF 中绑定(bind) Ctrl 和数字键盘/(正斜杠)?

azure - 是否可以使用 azure powershell 在 azure 中查看日志警报?