The next JFinal is JFinal without Servlet. next-jfinal是下一代jfinal开发框架,和jfinal不同的是next-jfinal移除了servlet.使用tio框架进行底层的io处理,具有更高的性能提升和更好的开发体验
已经得完成next-jfinal-web-hello源码
让自定义的servlet完全适配旧的jfinal,即完全重写servlet或者部分重写servlet以支持旧的jfinal应用
更快的启动速度: 因为没有servlet容器,所以启动速非常快,web-hello工程,可以在500毫秒内启动,这对云服务而言极其重要
性能提升:Tio 提供了基于 AIO 的实现,这相比于传统的基于 Servlet 的阻塞 IO,在处理并发请求时可以有更高的性能。这是因为 AIO 支持单线程或少量线程处理大量连接,减少了线程切换的开销。
更灵活的协议支持:由于 Tio 提供了更底层的网络通信支持,它可以灵活处理各种自定义协议,而不仅限于 HTTP/HTTPS。这在开发需要支持特定协议的应用时非常有用。
更好的控制与优化空间:通过直接处理底层的网络通信,开发者可以对网络层有更精细的控制,比如自定义缓冲区大小、连接管理、超时设置等,从而为特定场景进行优化。
降低资源消耗:由于 AIO 基于非阻塞模型,能够减少对线程和内存的需求,尤其在高并发场景下,能够有效降低资源消耗。
更适合实时通信:Tio 更适合需要低延迟和高吞吐量的实时通信场景,比如在线游戏、即时通讯等,因为它能够更高效地处理大量的并发连接和数据传输。next-jfinal可以完全集成这一特性
更好的扩展性:基于 AIO 的框架通常具有更好的扩展性。它们能够更有效地处理增长的用户和数据量,而无需线性地增加硬件资源。
1.当服务器接收到一个请求时,该请求首先由 TioServer 接收,此时数据仍处于 TCP 数据包的形式。Tio-server 随后调用 TioBootServerHandler 来处理这些数据;TioBootServerHandler 是 ServerAioHandler 的一个实现。
2.在处理过程中,TioBootServerHandler 会根据协议类型(TCP, WebSocket, HTTP)进行协议解析并判断如何进一步处理请求。若识别为 HTTP 请求,则会传递给 HttpServerAioHandler 来进行处理。
3.HttpServerAioHandler会检查请求是否合法(IP白名单和和名单的判断),如果合法这交由JFinalHttpRequestHandler处理.
4.JFinalHttpRequestHandler 负责创建 DefaultHttpServletRequest 和 DefaultHttpServletResponse 对象,并将这些对象传递给 com.jfinal.core.ActionHandler。
5.ActionHandler 接着执行路由查找和调用Jfinal Controller的操作,最终将处理结果封装在 DefaultHttpServletResponse 中并返回。这个过程确保了 HTTP 请求能够被正确解析、处理,并得到相应的响应。