Webflux 介绍

type
status
date
slug
summary
tags
category
icon
password
😀
简单的 Webflux 技术介绍,并且和 SpringMVC 的简单比较
 

目的

与用户打交道

why created?

1.基于函数式编程 2.使用固定的线程和硬件资源处理并发

两种编程模型

  1. 基于注解的 controller
  1. 函数式端点Functional Endpoints
      • Router与Handler
        • RouterFunctions可以产生Router和Handler对象,
        • RouterFunctions对标@Controller中的注解
        • Router相当于@RequestMapping
        • Handler相当于Controller中的方法
      • ServerRequestServerResponse
        • 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
    • 陡峭的学习路线

处理请求类

  1. HttpHandler
      • 非阻塞 http 请求处理
  1. WebHandler
      • 高级一点,web api 的请求处理
  1. WebSocket vs. HTTP
      • http
        • 只能由客户端发起连接,服务端作出响应
        • 无状态:每次连接处理一个请求,请求结束后断开连接
        • 无连接: 对于事务处理没有记忆能力,服务器不知道客户端是什么状态
        • 缺陷:通信只能由客户端发起,如果服务器有连续的变化,客户端很难得知
        • 基于http实现即时通讯
          • 轮询: ajax
          • 长轮询: ajax 请求,服务器 hold 住连接
          • 长连接: 嵌入 iframe,长连接的请求,服务器不断输入数据
          • Flash Socket:内嵌 socket 类的 flash 程序,js 调用 flash,socket 通信
      • websockets
        • 2008 诞生,2011 成为标准,浏览器支持
        • 服务器主动向客户端推送消息,客户端也可以主动向服务器发送信息,全双工通信
        • 建立握手连接是通过 http 传输的,建立之后,传输不需要 http 协议
 
 
Prev
《认知觉醒》
Next
响应式编程
Loading...