1、传统 JSP 模式
也称为 web 1.0 时代。基于传统的网页 HTML 文件,可以作为页面来浏览。同时,又兼容 java 代码,可以用来处理业务逻辑。对于功能单一、需求稳定的项目,可以把页面展示逻辑和业务逻辑都放到 JSP 中。
- 优点:编程简单,易上手,容易控制
- 缺点:前后端职责不清晰,可维护性差
2、Model1 模式
可看做是对传统 JSP 模式的增强。加入了 JavaBean 或 Servlet,将页面展示逻辑和业务逻辑做了分离。JSP 只负责显示页面,JavaBean 或者 Servlet 负责收集数据,以及返回处理结果。
- 优点:架构简单,适合中小型项目
- 缺点:虽然分离出业务逻辑,但是 JSP 中仍然包含页面展示逻辑和流程控制逻辑,不利于维护
3、Model2 模式
该模式也可以看做是传统 MVC 模式。为了更好地进行职责划分,将流程控制逻辑也分离了出来。JSP 负责页面展示,以及与用户的交互,展示逻辑;Servlet 负责控制数据显示和状态更新,控制逻辑;JavaBeans 负责操作和处理数据,业务逻辑。
- 优点:分工明确,层次清晰,能够更好地适应需求的变化,适合大型项目
- 缺点:相对复杂,严重依赖 Servlet API,JavaBean 组件类过于庞大
4、后端 MVC 模式
该模式是在 Model2 的基础上,对传统 MVC 模式的一种变化。涌现出很多基于 MVC 模式的开发框架,如 Struts、SpringMVC 等。再加上 Spring 开源框架强大的兼容特性,进而形成了可以适应绝大多数业务需求的经典框架组合,如 SSH、SSM 等。
- 前端开发重度依赖后端开发环境
- 前后端职责依旧纠缠不清,Controller 成为灰色地带
5、前端 MVC 模式(SPA)
随着 Ajax 的推出,标志着进入了 web 2.0 时代。前后端分工明确,通过 Ajax 接口关联,浏览器端变得复杂。
- 前后端可以在约定接口后实现高效并行开发
- 前端开发的复杂度控制比较困难
6、前端为主的 MV*模式
为了降低前端开发复杂度,涌现了大量的前端框架,如 EmberJS、KnockoutJS、AngularJS 等。原则是先按照类型分层,如 Templates、Controllers、Models 等,然后在层内按照业务功能切分。
好处:
- 前后端职责清晰,在各自的工作环境开发,测试容易
- 前端开发的复杂度可控,通过组件化组织结构
- 部署相对独立
不足:
- 前后端代码不能复用
- 全异步不利于 SEO
- 性能并非最佳,尤其是移动互联网的环境下
- SPA 不能满足所有需求
7、全栈模式
随着 Node.js 的兴起,标志着全栈时代的到来,如 MEAN 框架组合、React+Redux 等。前端 UI 层,处理浏览器层的展现逻辑,HTML+CSS+JavaScript。后端 UI 层,处理路由、模板、数据获取等,前端可以自由调控。后端可以专注于业务逻辑层的开发。
好处:
- 前后端的部分代码可以复用
- 需要 SEO 可以在服务端同步渲染
- 请求太多导致性能问题可以通过服务端缓解
挑战:
- 需要前端对服务端编程有进一步的了解
- Node 层与 Java 层能否高效通信尚需要验证
- 需要更多经验才能对部署、运维层面熟悉了解
- 还有许多历史遗留问题
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于