架构模式的演化

58 阅读3分钟

1 未分离时代(各种耦合)

1.1 过程讲解

image.png 所有的请求都被发送给作为控制器的Servlet,它接受请求,并根据请求信息将它们分发给适当的JSP来响应。同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境。JSP可以通过直接调用方法或使用UseBean的自定义标签得到JavaBeans中的数据。

1.2 JSP处理流程

image.png
1.浏览器发送一个 HTTP 请求给服务器。
2.Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。
3.JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。
4.JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。
5.Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
6.Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到浏览器中。\

1.3 开发方式

1.3.1

image.png

1.3.2

image.png

2 半分离时代

2.1 过程讲解

前后端半分离,前端负责开发页面,通过接口(Ajax)获取数据,采用Dom操作对页面进行数据绑定,最终是由前端把页面渲染出来。

image.png

2.2 web工作流程

1、打开web,加载基本资源,如CSS,JS等;
2、发起一个Ajax请求再到服务端请求数据,同时展示loading;
3、得到json格式的数据后再根据逻辑选择模板渲染出DOM字符串;
4、将DOM字符串插入页面中web view渲染出DOM结构;这些步骤都由用户所使用的设备中逐步执行,也就是说用户的设备性能与APP的运行速度联系的更紧换句话说就是如果用户的设备很低端,那么APP打开页面的速度会越慢。

2.3 缺点

1、JS存在大量冗余,在业务复杂的情况下,页面的渲染部分的代码,非常复杂;
2、在Json返回的数据量比较大的情况下,渲染的十分缓慢,会出现页面卡顿的情况;
3、SEO( Search Engine Optimization,即搜索引擎优化)非常不方便,由于搜索引擎的爬虫无法爬下JS异步渲染的数据,导致这样的页面,SEO会存在一定的问题;
4、资源消耗严重,在业务复杂的情况下,一个页面可能要发起多次HTTP请求才能将页面渲染完毕。可能有人不服,觉得PC端建立多次HTTP请求也没啥。

3.分离时代

3.1 过程讲解

前端负责view和controller层 后端只负责model层,业务处理与数据持久化等 controller层与view层对于目前的后端开发来说,只是很边缘的一层,目前的java更适合做持久层、model层的业务。

3.2前后端职责划分

image.png