C# 多控制器与单控制器的WEBAPI2性能

C# 多控制器与单控制器的WEBAPI2性能,c#,.net,performance,asp.net-web-api2,C#,.net,Performance,Asp.net Web Api2,那么,对我来说,是向单个WebAPI2控制器发出多个请求更好,还是向多个控制器发出相同数量的请求更好。i、 e单个控制器处理10个请求的性能是否比10个控制器处理每个请求的性能差 无论哪种方式,您都可以解释为什么一种方式优于另一种方式,以及两种方式的请求处理方式有何不同。完全不同 除非明确更改默认行为,否则将为每个请求创建一个新的控制器实例。因此,无论是创建控制器A的10个实例还是控制器B的10个实例,都没有区别:无论哪种方式,都会得到10个实例 不应该说,如果控制器A比控制器B更贵,这显然会产

那么,对我来说,是向单个WebAPI2控制器发出多个请求更好,还是向多个控制器发出相同数量的请求更好。i、 e单个控制器处理10个请求的性能是否比10个控制器处理每个请求的性能差

无论哪种方式,您都可以解释为什么一种方式优于另一种方式,以及两种方式的请求处理方式有何不同。

完全不同

除非明确更改默认行为,否则将为每个请求创建一个新的控制器实例。因此,无论是创建控制器A的10个实例还是控制器B的10个实例,都没有区别:无论哪种方式,都会得到10个实例

不应该说,如果控制器A比控制器B更贵,这显然会产生影响。

一次呼叫更好

实际上有几个因素包括这一点。主要的一点是,在任何给定的系统中,系统的效率是最慢的部分。在大多数情况下,使用多层体系结构时,除非您在计算中做了非常复杂的事情,否则最慢的部分是信息的层间传输。因此,对于跨层的多个传输来说,进程a需要10毫秒才能完成,进程b需要25毫秒才能完成,但传输双向都需要100毫秒,如果您正在进行单线程呼叫,则您将等待135毫秒才能完成这两个任务,而多个呼叫则需要235毫秒

但是等一下,您会问如果两个调用都在不同的线程中会发生什么。好的,现在这是一个系统资源的问题,请确保您的固定线程会在一定程度上加快速度。在上面描述的场景中,您最多只能说10毫秒的减速,在大范围全传输时,这几乎是微不足道的。但是,当您的调用超过固定线程数时会发生什么情况,因为api调用是无状态的,每个调用都在自己的线程中处理。因此,现在你必须支付罚款来加速线程,这是一个非常复杂的操作


有一种情况是,您可以为同一个操作执行多个api调用,但我建议仅在互不依赖的情况下使用这些api调用,例如,进程a关闭、完成、返回并完全独立于进程b继续运行

我怀疑这没有什么区别,我认为控制器是根据请求创建的,但可能存在一些缓存问题。我很想看到一个好的答案当你说10个控制器分别处理一个请求时,你是在谈论结构(即一个控制器上的10个请求方法)还是活动(即单例与每个请求资源)?如果我说1个控制器允许我获得10个不同的实体(我知道,糟糕的设计,只是一个例子)我为每个控制器发出一个请求,而不是将每个get请求放在不同的控制器中,每个实体一个。我认为您误解了这个问题:OP询问1个控制器处理10个单独的请求还是10个控制器处理单个请求之间有区别。这不是在单个调用中对请求进行分组。