C# asp.net mvc中的控制器是如何工作的?

C# asp.net mvc中的控制器是如何工作的?,c#,asp.net-mvc,multithreading,C#,Asp.net Mvc,Multithreading,我需要在服务器中设置一个计数器,用于保存收到的http请求数。由于每台服务器可以在特定时间点异步处理多个请求(假设每个用户都在调用同一个控制器),我可以将计数器放置在何处,以便在每个请求之间共享。是,控制器被实例化并与每个请求一起处理。是的,每个请求都有自己的线程,尽管该线程可以交换(在异步工作的情况下),也可以在其生命周期内服务多个请求 并行性是一个复杂的主题,在任何给定的时间都基于许多不同的因素。不过简单地说,是的,线程将并行运行。但是,它们之间不共享资源(大部分情况下)。最后,通过父进程有

我需要在服务器中设置一个计数器,用于保存收到的http请求数。由于每台服务器可以在特定时间点异步处理多个请求(假设每个用户都在调用同一个控制器),我可以将计数器放置在何处,以便在每个请求之间共享。

是,控制器被实例化并与每个请求一起处理。是的,每个请求都有自己的线程,尽管该线程可以交换(在异步工作的情况下),也可以在其生命周期内服务多个请求

并行性是一个复杂的主题,在任何给定的时间都基于许多不同的因素。不过简单地说,是的,线程将并行运行。但是,它们之间不共享资源(大部分情况下)。最后,通过父进程有一些资源共享,但是对于实际应用,你应该考虑它们是幂等的。 基于所有这些和您的最后一个问题,如果您有试图在代码中实现计数器的设计,请不要这样做。这行不通,也永远行不通。即使您可以在某种程度上协调某种进程绑定的线程安全计数器,它也无法与工作线程协同工作,并且每次应用程序池回收、崩溃或因任何原因重新启动时,它都会被杀死


计数器应该在数据库或其他持久数据存储中实现。句号。即使这样,您也需要非常小心并发性,除非您花费大量时间排除机器人、重复相同用户加载页面等,否则无论发生什么情况,您的计数都将被取消。

为什么不试试看呢?学习就是行动。如果你想在多个请求之间共享数据,你应该考虑一些持久机制,比如会话或数据库存储,或者静态/Snutelon ETCC,其中一个问题有四个。首先阅读并尝试搜索,每个问题问一个问题。我重新编写了这个问题,它是否需要进一步细化@编解码器