WEBAPI2的性能很多vs单控制器

时间:2015-04-08 18:27:50

标签: c# .net performance asp.net-web-api2

因此,对我来说,向单个WebAPI2控制器发出多个请求或向多个控制器发出相同数量的请求是否更好?也就是说,处理10个请求的单个控制器执行的处理是否比每个处理一个请求的10个控制器差?

无论哪种方式,请您解释为什么以及如何比另一方更好,以及两者之间的请求处理方式有何不同。

2 个答案:

答案 0 :(得分:3)

完全相差0。

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

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

答案 1 :(得分:0)

一次通话更好。

实际上有几个因素包括这一点。主要的是这个,在任何给定的系统中,系统的效率是最慢的部分。在大多数情况下,除非您在计算中执行极其复杂的操作,否则在多层架构中,最慢的部分是信息层之间的传输。因此,跨层的多个传输表示你有一个需要10毫秒才能完成的处理,并且处理b需要25毫秒才能完成,但你的传输需要100毫秒才能完成,如果你正在进行单线程调用,你将会是等待135毫秒的呼叫可以完成两个呼叫,而235则用于多个呼叫。

但是等一下,如果两个调用都在不同的线程中,请等一下。好了,现在这是一个系统资源问题,确保你的常规线程能够更快地达到一定程度。在上述场景中,你仍然在谈论最好的10毫秒减速带,在大型全传输量表上说话时几乎是微不足道的。但是当您的呼叫超过常设线程号时会发生什么,因为api呼叫是无状态的,每个呼叫都在其自己的线程中处理。所以现在你必须支付罚金以启动一个线程,这是一个非常复杂的操作。

有一些场景可以为同一个操作做多个api调用,但是我建议只使用那些不相互依赖的东西,例如进程完成后回来再去完全独立于流程b