多个控制器与单个控制器的 WEBAPI2 性能

WEBAPI2 performance of many vs single controller

所以,对我来说,是向单个 WebAPI2 控制器发出多个请求更好,还是向多个控制器发出相同数量的请求更好。即,处理 10 个请求的单个控制器的性能是否比 10 个控制器每个处理一个请求的性能差?

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

正好是 0 差异。

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

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

一个电话更好。

实际上有几个因素包括在内。主要的是,在任何给定的系统中,系统的效率是最慢的组件。在大多数情况下,多层架构除非你在计算中做一些非常复杂的事情,否则最慢的部分是信息的层间传输。因此,对于跨层的多个传输,假设您有一个过程 a 需要 10 毫秒才能完成,而过程 b 需要 25 毫秒才能完成,但是您的传输需要 100 毫秒才能双向进行,如果您正在进行单线程调用,您将等待 135 毫秒完成一次调用,而多次调用则为 235 毫秒。

但是等等,如果两个调用在不同的线程中会发生什么。好的,现在这是系统资源的问题,确保您的常设线程会使速度更快。在上述场景中,您仍然在谈论最多 10 毫秒的减速带,这在大的全传输范围内几乎微不足道。但是当你的调用超过常设线程数时会发生什么,因为 api 调用是无状态的,每个调用都在它自己的线程中处理。所以现在你必须付出代价来启动一个线程,这是一个非常复杂的操作。

在某些情况下,您可以对同一操作进行多次 api 调用,但我建议仅将这些调用用于彼此不依赖的事物,例如进程 a 关闭完成后返回并继续完全独立于进程 b