首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET Web :异步操作有什么缺点吗?

ASP.NET Web :异步操作有什么缺点吗?
EN

Stack Overflow用户
提问于 2017-05-02 07:58:13
回答 2查看 344关注 0票数 3

我正在建立一个Web,它将通过我们的Intranet为客户提供服务。为了方便开发人员在客户端上工作,我正在考虑让Web坚持与客户端共享的接口,如下所示。

使用共享接口的目的主要是对客户端开发人员在编译时检测到的Web API进行更改。此外,客户端还可以利用将用于与Web通信的HttpClient实例包装器的接口。

客户端开发人员希望在其整个实现过程中使用asyncawait,我有谁可以说“不”呢?

代码语言:javascript
复制
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操作定义为异步操作有什么不利之处吗?如果不是,我要全身心投入!

-S

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-02 09:08:22

何时使用异步:

  1. 异步API调用。
  2. 长期运行的数据库查询。
  3. CPU绑定的任务。
  4. 当你需要实现并行的时候。

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

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

票数 1
EN

Stack Overflow用户

发布于 2017-05-02 13:07:29

使用共享接口的目的主要是对客户端开发人员在编译时检测到的Web API进行更改。

如今,自动生成API描述(例如Swagger),然后自动生成客户端(可以是.NET或其他语言)变得更加常见。这种方法不仅允许多个客户端(例如,一个Swagger客户端是API的HTML文档,包含示例和从网站调用它们的能力),而且它还可以为您处理同步/异步转换,而不需要任何类型的“异步签名,但实际上是同步的”代码。

也就是说,如果您想要同步实现异步方法,就没有什么可以阻止它。我唯一能想到的问题是,如果您使用的是完全ASP.NET,那么异步操作就不能是子操作。此限制在ASP.NET核心上不再存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43732905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档