C# API中的角度同步操作

C# API中的角度同步操作,c#,angular,C#,Angular,我有一个关于在API设计中运行同步操作的问题。我理解在某些场景下完全运行异步是正确的方法,这更像是一种概念上的理解。如果我有一个有角度的前端,用户可以通过Subscribe调用一个API端点,该端点传递一个CustomerId列表。在API中,会调用一个同步ActionResult,然后它会迭代这些客户id并调用一个同步数据库调用,每个调用可能需要很长时间才能完成 我的问题是,如果另一个用户在同一个UI中对后端服务执行操作,那么该服务是否实际上会锁定该服务?在其他用户操作完成之前,该服务是否不会

我有一个关于在API设计中运行同步操作的问题。我理解在某些场景下完全运行异步是正确的方法,这更像是一种概念上的理解。如果我有一个有角度的前端,用户可以通过Subscribe调用一个API端点,该端点传递一个CustomerId列表。在API中,会调用一个同步ActionResult,然后它会迭代这些客户id并调用一个同步数据库调用,每个调用可能需要很长时间才能完成

我的问题是,如果另一个用户在同一个UI中对后端服务执行操作,那么该服务是否实际上会锁定该服务?在其他用户操作完成之前,该服务是否不会响应?我只是想把我的脑袋绕到这样一个概念上:在这种情况下,服务是否会锁定,UI是否会没有响应能力。当然,多任务编程是从概念上处理这个问题的方法


感谢您的输入。

您缺少的是:-

  • angular在客户端上运行这意味着每个用户都会有一个实例在他的系统上运行,他的本地实例可能会失败,因此特定的客户端实例可能会失败

  • 如果使用异步后端,它也不会停止,它可能会使进程失败并相应地响应(如果所有错误都已处理)。在最坏的情况下,即使服务器出现故障,服务器也会重新启动,因为大部分情况下都是使用pm2之类的流程管理器进行监控的。这不需要时间来重新启动它


  • 因此,在服务器出现问题并且服务器停止响应之前,基本上没有任何东西会被阻止。

    另一个用途是客户端的另一个实例。用户之间完全独立,因此当两个用户同时单击同一个按钮时,可能会出现并发问题。为了强调@Andrei的观点,您应该在c#backend中解决您的问题,而且因为您显然关心您的服务器性能,用C#编写同步数据库访问代码是一种滑稽的行为。我知道它应该是异步的。我想问的是,服务器上到底发生了什么,服务是否会锁定所有用户?基于这个问题@Aluan在服务器上执行同步io时,会阻止正在执行的线程。在asp.net中,存在一些固有的并发性和并行性,因为多个不同的请求可以而且通常由不同的线程提供服务。这取决于运行它的系统。如果只有几个逻辑核,同步IO的影响将更大。在不知道你有多少流量和你操作了多少数据等情况下,很难说现实世界的影响会有多严重,但使用同步IO只是浪费