C# WebApi异步与同步

C# WebApi异步与同步,c#,asp.net-web-api,C#,Asp.net Web Api,我不熟悉.NETWebAPI,因为我知道最好使用异步API而不是同步API,但是有什么区别呢? 如果API是同步的,并且已经从一个客户机调用过,并且从另一个客户机调用过,正如我所检查的,则不会发生中断,并且两个调用将同时进行。那么,使其异步有什么好处呢 更新:据我所知,如果请求数量很大,如果我使用异步,某些调用的等待时间会更少,因为有更多的线程可用于运行任务(因为其中一些线程在等待数据库调用或网络调用等时被释放)。这是真的吗?首先重新迭代同步和异步之间的差异 {--------------同步任

我不熟悉.NETWebAPI,因为我知道最好使用异步API而不是同步API,但是有什么区别呢? 如果API是同步的,并且已经从一个客户机调用过,并且从另一个客户机调用过,正如我所检查的,则不会发生中断,并且两个调用将同时进行。那么,使其异步有什么好处呢


更新:据我所知,如果请求数量很大,如果我使用异步,某些调用的等待时间会更少,因为有更多的线程可用于运行任务(因为其中一些线程在等待数据库调用或网络调用等时被释放)。这是真的吗?

首先重新迭代同步和异步之间的差异

{--------------同步任务1--------}{--------------同步任务2--------}

{--------------------异步任务1-----------------}
{-----------------异步任务2------------------}

我希望你在这一点上得到你的答案,为什么它是有益的。想象一下这样一种情况:你的API服务1000名篮球付费者的名单和他们的详细信息,同时请求进入城市名单。我打赌你的客户端应用程序会看起来更整洁,如果你在玩家列表中得到一些东西,不是吗

其次,API不喜欢Aync本身。这是你可以选择的编程方式。如果您使用完整的语言和操作系统功能,那么您的应用程序和用户将从中受益

缓存


如果要使用新的内存缓存或自定义服务器级缓存,则使用异步确实有助于缓存。毕竟,你的客户正在寻找304返回,当一个长请求被服务时,一个小请求可以被服务,即缓存检查

I在同步的情况下,对于每个请求,只分配一个线程,并且仅在完成特定请求后才释放该线程。 而在异步的情况下,线程可以被其他请求重用

因此,如果您的应用程序是I/O绑定的,那么您可以通过使用异步看到应用程序的显著改进,如果您的应用程序是CPU绑定的,那么异步就没有那么大的用处


async/sync在这里不是要对其他客户端做出响应,而是要在等待其他事情发生时不阻塞服务器资源。通常情况下,服务器正在等待数据库、其他网络调用、文件系统等。如果您“一路向下”异步,则可能会出现重复,我知道由于重复或主题外的原因,必须关闭此服务器,我找不到任何重复@概述-我在“相关”部分犹豫是否要使用所有这些都是事实上正确的,我认为这有点忽略了问题的要点,即web服务的异步等待模式