2017-10-05 26 views

回答

4

这是一个相当广泛的话题 - 但让我们先清理一下。

  • Spring MVC是一个基于Servlet API的Web框架;这些应用程序可以部署在Servlet容器(如Jetty,Tomcat,Undertow)上。
  • Spring WebFlux是一个基于反应式HTTP层的反应式Web框架;这些应用程序可以部署在Netty或Undertow(使用本地适配器)或Jetty/Tomcat /任何Servlet 3.1容器(由于使用Servlet 3.1适配器)。
  • 春天启动的应用程序可以使用Spring MVC或Spring WebFlux

Spring框架5.0提供了一个FAQ about that with several useful resources。简而言之,这种方法对于处理大量延迟和并发性的工作负载的效率和可扩展性是有益的。实际上,Servlet 3.1的异步I/O也确实解决了这些问题,但是使用该API需要避开使用阻塞的Servlet API的其他位。这就是为什么Spring WebFlux不在其编程模型中公开Servlet API,而是利用Servlet适配器的原因。

+0

感谢您的回答。我还有一个问题:Servlet 3.1与Netty具有相同的速度/响应/连接效率吗?毕竟,他们都使用NIO。 – wikk

+1

确实没有太大的区别,但它可能取决于您的使用情况。此外,他们的行为可能会有所不同,但并不罕见,例如http客户端突然断开连接。 –

相关问题