我正在设置一个 Web API,它将通过我们的 Intranet 为客户端提供服务。为了方便在客户端工作的开发人员,我正在考虑让 Web API 遵循将与客户端共享的接口(interface),如下所示。
使用共享 接口(interface)的目的主要是为了让客户端开发人员在编译时检测到对 Web API 的更改。此外,客户端可以利用接口(interface)来包装 HttpClient 实例,这些实例将用于与 Web API 通信。
客户端开发人员希望在整个实现过程中使用 async
和 await
,我有什么资格说“不”?
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
最佳答案
何时使用异步:
- 异步 API 调用。
- 长时间运行的数据库查询。
- 受 CPU 限制的任务。
- 当您需要实现并行性时。
何时不使用:在编写任何快速运行的任务或方法时。
注意:当心死锁,因为编译器允许您编写并成功编译异步代码,即使不了解它的基本概念也是如此。
关于c# - ASP.NET 网络 API : any downsides to asynchronous operations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732905/