ASP.NET Web api 中的并发请求处理

问题描述 投票:0回答:3

我有一个非常简单的 Web 应用程序,其中包含一些端点(获取、放置、删除)。

应用程序的任务是从我的数据库中存储/返回/删除一些数据。

我想为项目添加并发性,以避免应用程序同时收到多个请求并并行处理的情况。

您能为我提供一些简单的解决方案/手册如何实施吗?

谢谢!

更新:

仅举个例子:

如果我发送两个请求(使用 Postman),例如 DELETE 和 GET,它会并行执行,所以我收到的结果不正确。

我想完成第一个(删除),然后才开始第二个

c# asp.net concurrency
3个回答
3
投票

通常,Web 应用程序会并发处理请求,以增加它们可以服务的用户数量。因此,并发性是 Web 应用程序的核心,并且在大多数情况下这不会导致问题。此外,底层数据库通常能够很好地处理并行请求。

当然,从开发人员的角度来看,您可以构建两个请求完全在同一时间点到达的情况,一个请求删除数据,另一个请求读取数据。对于大多数 Web 应用程序来说,处理更多用户更为重要,因此他们接受在这种理论上的情况下,他们在刚刚删除的响应中返回数据。

此外,在单服务器环境中顺序处理请求似乎很容易,但在多服务器部署中却很难。此外,如果请求必须等待其他请求完成,则会导致应用程序性能下降。

因此,除非您的场景非常具体或者您因并发请求而遇到问题,否则我建议坚持使用默认行为。


0
投票

不太确定当您想要并发但同时又不让它处理并行请求时您要求什么?

无论如何我都会尝试一下:

鉴于它是一个 dotnet 核心项目。 只要您对数据库使用异步操作并确保其一直异步到端点,您应该能够很好地处理并发请求。


0
投票

如果您的场景非常具体,您可以使用生产者和消费者模式,该模式由 C# 中的阻塞队列实现。这个队列是线程安全的,您可以将您的请求添加到这个队列中,然后处理它们。

https://makolyte.com/event-driven-dotnet-concurrent- Producer-consumer-using-blockingcollection/

© www.soinside.com 2019 - 2024. All rights reserved.