Webflux 介绍
type
status
date
slug
summary
tags
category
icon
password
简单的 Webflux 技术介绍,并且和 SpringMVC 的简单比较
目的
与用户打交道
why created?
1.基于函数式编程
2.使用固定的线程和硬件资源处理并发
两种编程模型
- 基于注解的 controller
- 函数式端点Functional Endpoints
- Router与Handler
RouterFunctions
可以产生Router和Handler对象,RouterFunctions
对标@Controller中的注解- Router相当于
@RequestMapping
- Handler相当于Controller中的方法
ServerRequest
和ServerResponse
- SpringMVC中使用的是
HTTPServletRequest
- webFlux + SpringMVC 使用的是
ServerHTTPRequest
- WebFlux+ 响应式 使用的是
ServerRequest
和 Spring MVC 区别
IO 密集度较高,使用性能较好
- 使用 netty 作为 web 容器
- 基于注解的 WebFlux 阻塞式与响应式实现
- WebFlux + SSE 服务器推
- 传统的SpringMVC注解与WebFlux通用,区别在于底层实现,WebFlux 中的
ServerHttpRequest
与 SpringMVC HTTPServletRequest 的区别
- 官网建议
- 如果 Spring MVC 用的好好的,不需要切换,命令式更好写,懂,debug
- 微服务架构,可以混合使用
- 如果使用了阻塞的持久化框架,如 JPA,JDBC,最好的选择就是 Spring MVC
- 陡峭的学习路线
处理请求类
- HttpHandler
- 非阻塞 http 请求处理
- WebHandler
- 高级一点,web api 的请求处理
- WebSocket vs. HTTP
- http
- 只能由客户端发起连接,服务端作出响应
- 无状态:每次连接处理一个请求,请求结束后断开连接
- 无连接: 对于事务处理没有记忆能力,服务器不知道客户端是什么状态
- 缺陷:通信只能由客户端发起,如果服务器有连续的变化,客户端很难得知
- 基于http实现即时通讯
- 轮询: ajax
- 长轮询: ajax 请求,服务器 hold 住连接
- 长连接: 嵌入 iframe,长连接的请求,服务器不断输入数据
- Flash Socket:内嵌 socket 类的 flash 程序,js 调用 flash,socket 通信
- websockets
- 2008 诞生,2011 成为标准,浏览器支持
- 服务器主动向客户端推送消息,客户端也可以主动向服务器发送信息,全双工通信
- 建立握手连接是通过 http 传输的,建立之后,传输不需要 http 协议
Prev
《认知觉醒》
Next
响应式编程
Loading...