当前位置:网站首页 > C++编程 > 正文

web和mvc的区别(webflux和webmvc区别)



webmvc和webflux作为spring framework的两个重要模块,代表了两个IO模型,阻塞式和非阻塞式。SpringWebflux是SpringFramework5.0添加的新功能。

​ webmvc是基于web servlet的阻塞式模型(一般称为oio),一个请求到达服务器后会单独分配一个线程去处理请求,如果请求包含IO操作,线程在IO操作结束之前一直处于阻塞等待状态,这样线程在等待IO操作结束的时间就浪费了。Web on Servlet Stack

​ webflux是基于web reactor的非阻塞模型(一般称为nio),webflx是反应式编程,反应式编程是关于非阻塞应用程序,它们是异步和事件驱动的,需要少量线程垂直扩展(即在JVM内)而不是水平扩展(即通过集群)。反应式应用的一个关键方面是背压的概念,这是一种确保生产者不会压倒消费者的机制。例如,当HTTP连接太慢时,在从数据库扩展到HTTP响应的反应组件的管道中,数据存储库也可以减速或完全停止,直到网络容量释放。比如,当请求到达服务器后也会分配一个线程去处理请求,如果请求包含IO操作,线程在IO操作结束之前不再是处于阻塞等待状态,而是去处理其他事情,等到IO操作结束之后,再通知(得益于系统的机制)线程继续处理请求。它也自持函数式编程来定义路由端点处理请求,通过使用 CompletableFuturefrom Java 8通过lambda表达式组成后续操作。Web on Reactive Stack

总结: struts2,springmvc等都是基于Servlet API与Servlet容器基础之上运行的,在Servlet3.1之后才有了异步非阻塞的支持。而WebFlux是一个典型非阻塞异步的框架,它的核心是基于Reactor的相关API实现的。相对于传统的web框架来说,它可以运行在诸如Netty,Undertow及支持Servlet3.1的容器上,因此它的运行环境的可选择行要比传统web框架多的多。SpringMVC采用命令式编程方,而WebFlux则是基于异步响应式编程。 SpringWebFlux并不会提高程序的运行速度(相对于SpringMVC来说),而是在有限的资源下提高系统的伸缩性,相对于提高程序的高并发。

img

 

​ springboot-webflux

img

springboot-web

img

webmvc使用实现WebMvcConfigurer接口,详细SpringBoot---WebMvcConfigurer详解_zhangpower1993的博客-CSDN博客_webmvcconfigurer

 

webflux实现WebFluxConfigurer 接口

 

​ Spring MVC的Security是通过Servlet的Filter实现的,而WebFlux的响应式Security是基于WebFilter实现的,由一些列的WebFilter形成的过滤器链。

webmvc-认证依赖于用户数据服务,需要实现UserDetailsService接口

 

webflux-认证依赖于用户数据服务,需实现ReactiveUserDetailsService

 

UserDetailsPasswordService 运行在 Servlet也就是webmvc上,ReactiveUserDetailsPasswordService 运行在WebFlux

webmvc使用@EnableRedisHttpSession

webflux使用@EnableRedisWebSession、

webmvc使用@EnableSwagger2

webflux使用@EnableSwagger2WebFlux

参考:

https://www.jianshu.com/p/95eebeea9c14

webmvc和webflux的配置详解_ssehs的博客-CSDN博客_webflux和webmvc共存

Spring Boot 2.x实战91 - 响应式编程6 - 响应式安全控制(Reactive Spring Security)_汪云飞记录本的博客-CSDN博客

到此这篇web和mvc的区别(webflux和webmvc区别)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pcap文件怎么看(如何查看pcap文件)2025-02-15 12:27:10
  • getcommevent 返回值(get方法返回值)2025-02-15 12:27:10
  • can通信接口(can总线通信接口)2025-02-15 12:27:10
  • ip地址换算(ip地址换算mac地址)2025-02-15 12:27:10
  • vs怎么用scanf输入(vs2019怎么用scanf_s)2025-02-15 12:27:10
  • pcap文件怎么打开(pcap文件打开空白)2025-02-15 12:27:10
  • kubectl 命令(kubectl命令如何查看pod日志)2025-02-15 12:27:10
  • git checkout指定版本(git checkout指定版本并提交)2025-02-15 12:27:10
  • codepen官网(codeplex官网)2025-02-15 12:27:10
  • cnns认证的检测机构(cns认证标准的内容有哪些)2025-02-15 12:27:10
  • 全屏图片