1.2 Web开发体系
目前,B/S架构从前端到后端都得到了简化,通常采用前、后端分离的设计模式,前端(Front-end)基于统一的HTTP协议来交互数据,后端(Back-end)基于RESTFUL Service提供资源访问的服务接口。HTTP协议采用无状态的短连接通信方式,在通常情况下一次请求完成一次数据交互。目前,主流的B/S架构大都采用如图1-3所示的前端+后端的架构,既可以满足海量用户的访问请求,又能确保用户请求的快速响应。
图1-3 前端+后端的架构
主流的B/S架构分为前端和后端(服务)两部分实现:前端负责UI呈现及用户交互,后端负责为前端提供RESTFUL API并根据前端的API调用来存储用户配置数据,执行相关操作。
什么是前端(前台)?
顾名思义,前端也就是在Web应用中用户可以看得见的东西,可以简单地理解为将HTML文档内容呈现在客户端浏览器的技术体系与框架。前端包括网页结构、布局样式和网页交互。HTML+CSS是前端最简单、最基础的要求(静态网页),HTML+CSS+JavaScript则是前端开发的标配(动态网页)。
什么是后端(服务)?
后端也被称为后台,意为背后、幕后,负责数据与业务逻辑处理,因此后端更多是与数据库进行交互,以处理相应的业务逻辑。后端需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。
常用的后端开发语言有PHP、JSP(Java)、Node.js、Python、ASPXA(C#)等。技术是在不断发展的,各种开发语言和相关架构都有各自的优缺点,没有哪一种是绝对好的,应结合实际应用场景选择和设计合适的方案。目前,在主流的B/S架构中,前端基于Ajax方式请求服务器提供的RESTFUL API,服务器将所访问的数据通过JSON格式返回给前端,前端负责解析和渲染。
表述状态转移(Representational State Transfer,REST)通常采用HTTP方法(如GET、PUT、POST、DELETE)来实现所有Web系统的服务能力,它采用一种软件架构风格,是一种针对网络应用的开发方式,可以降低开发的复杂性。REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,客户端浏览器通过URI来获取资源。REST与复杂的SOAP和XML-RPC相比,REST更加简洁,所以越来越多的Web服务开始采用REST。
为了帮助读者更加清晰地理解B/S架构,接下来以目前广泛应用的3种B/S架构方式为例,从工作流程的层面理解各种B/S架构方式的工作机制。
1. 方式1:客户端浏览器-服务器-数据库(见图1-4)
图1-4 B/S架构的方式1:客户端浏览器-服务器-数据库
方式1是比较常用的一种方式,具体流程如下。
(1)客户端浏览器向服务器发起HTTP请求。
(2)服务器中的Web层处理HTTP请求。
(3)服务器中的应用层调用业务逻辑。
(4)服务器和数据库进行数据交换,然后将数据生成最终的HTML文档内容并返回给客户端浏览器。
2. 方式2:客户端浏览器-Web服务器-应用服务器-数据库(见图1-5)
图1-5 B/S架构的方式2:客户端浏览器-Web服务器-应用服务器-数据库
方式2和方式1类似,只是将Web服务器和应用服务器分开,具体流程如下。
(1)客户端浏览器向Web服务器发起HTTP请求。
(2)Web服务处理HTTP请求,并且调用应用服务器的RESTFUL方法。
(3)应用服务器执行对应的业务功能,和数据库进行数据交互,将JSON结果数据返回给Web服务器。
(4)Web服务器生成HTML文档内容并返回给客户端浏览器。
3. 方式3:客户端浏览器-负载均衡器Nginx-Node服务器-应用服务器-数据库(见图1-6)
图1-6 B/S架构的方式3:客户端浏览器-负载均衡器Nginx-Node服务器-应用服务器-数据库
方式3通常在高并发应用中使用,具体流程如下。
(1)客户端浏览器向负载均衡器Nginx发送HTTP请求。
(2)负载均衡器Nginx能够将客户端浏览器的HTTP请求转发给Node服务器。
(3)Node服务器接收到HTTP请求之后,对请求进行解析并调用应用服务器提供的服务接口。
(4)应用服务器和数据库进行数据交互,将结果数据返回给Node服务器。
(5)Node服务器将数据返回给负载均衡器Nginx。
(6)负载均衡器Nginx将数据返回给客户端浏览器。
在方式3中,真正对外提供的地址不是Node服务器的地址,而是负载均衡器Nginx的地址。