Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中,控制器如何处理请求?_C#_Asp.net_.net_Asp.net Mvc_Async Await - Fatal编程技术网

C# 在ASP.NET MVC中,控制器如何处理请求?

C# 在ASP.NET MVC中,控制器如何处理请求?,c#,asp.net,.net,asp.net-mvc,async-await,C#,Asp.net,.net,Asp.net Mvc,Async Await,我正在读一本关于ASP.NET MVC同步请求处理的书: 控制器在一个web应用程序服务器中运行,该服务器一次只处理一个请求,如果所有请求都指向同一个操作方法,并且处理程序仅在处理完前一个请求后才开始处理请求,并且在大多数情况下,处理程序处于空闲状态 那么,为什么ASP.NET MVC不创建多个控制器实例来服务多个请求呢?(我不是说DI,它只适用于模型类而不是目标控制器类)所以每当有新的请求时,应用程序就会创建目标控制器的新实例,所以在这种情况下,我们甚至不需要使用async/await?这本书

我正在读一本关于ASP.NET MVC同步请求处理的书:

控制器在一个web应用程序服务器中运行,该服务器一次只处理一个请求,如果所有请求都指向同一个操作方法,并且处理程序仅在处理完前一个请求后才开始处理请求,并且在大多数情况下,处理程序处于空闲状态


那么,为什么ASP.NET MVC不创建多个控制器实例来服务多个请求呢?(我不是说DI,它只适用于模型类而不是目标控制器类)所以每当有新的请求时,应用程序就会创建目标控制器的新实例,所以在这种情况下,我们甚至不需要使用async/await?

这本书是什么?这与我描述ASP.NET的方式相差甚远。@Flydog57这本书是亚当·弗里曼的《面向MVC开发人员的ASP.NET Web API 2专家》,第3章我们可以做任何我们想做的事,但每件事都有成本。创建新线程是一项非常昂贵的操作,大多数情况下会降低性能,而不是提高性能。在新线程上运行可以带来好处的操作是与外部资源通信并且必须等待这些资源响应或执行任务的操作。async/await的思想是,主线程在等待外部资源时可以做一些其他事情。@RacilHilan感谢您对async/await的回答。但我仍然感到困惑,为什么不在主线程中创建控制器类的新实例来服务多个新请求呢?它确实为每个请求创建了控制器的新实例。总是这样。但是类的新实例与新线程不同。IIS为每个请求提供一个单独的线程。整个请求在一个线程上运行,除非它在重载情况下从IO线程迁移到工作线程。我不知道这本书的摘录是什么意思,我们需要它所处的环境。但事实是,每个请求都在一个单独的线程上运行,并获得控制器和任何其他必需类的新实例。