前后端分离已经是互联网项目开发的标准方式,通过Nginx+Tomcat的方式进行解耦;核心思想是html页面通过ajax调用后端的restful api接口并使用json数据进行交互;
web服务器:一般指Nginx、Apache等,只能解析静态资源;
应用服务器:一般指Tomcat、jetty等,可以解析动态及静态资源,但解析静态资源的能力没web服务器好;
一般只有web服务器才能被外网访问,应用服务器只能内网访问;
网站通过域名访问的过程:
浏览器通过域名通过dns服务器找到外网ip,将http请求发送到服务器,在tcp的3次握手之后(http下面是tcp/ip),通过tcp协议开始传输数据,服务器得到请求后开始提供服务,之后返回应答给浏览器,浏览器通过content-type来解析返回的内容呈现给用户;
当前开发过程:
1. 产品经理/领导/客户提出需求
2. UI做出设计图
3. 前后端约定接口&数据&参数
4. 前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口&参数不变,就不用两边都修改代码,开发效率高)
5. 前后端集成
6. 前端页面调整
7. 集成成功
8. 交付
请求方式:
以前老的方式是:
1.客户端请求
2.服务端的servlet或controller接收请求(后端控制路由与渲染页面,整个项目开发的权重大部分在后端)
3.调用service,dao代码完成业务逻辑
4.返回jsp(整个页面)
5.jsp展现一些动态的代码
新的方式是:
1. 浏览器发送请求
2. 直接到达html页面(前端控制路由与渲染页面,整个项目开发的权重前移)
3. html页面负责调用服务端接口产生数据(通过ajax等等,后台返回json格式数据,json数据格式因为简洁高效而取代xml)
4. 填充html,展现动态效果,在页面上进行解析并操作DOM。
(访问一下阿里巴巴等大型网站,然后按一下F12,可以监控一下刷新一次页面,他的http是怎么玩的,大多数都是单独请求后台数据,使用json传输数据,而不是一个大而全的http请求把整个页面包括动+静全部返回过来)
总结一下新的方式的请求步骤:
大量并发浏览器请求--->web服务器集群(nginx)--->应用服务器集群(tomcat)--->文件/数据库/缓存/消息队列服务器集群;
同时又可以玩分模块,还可以按业务拆成一个个的小集群,为后面的架构升级做准备。
真正的前后端解耦,前端服务器用的是Nginx,将css、js、图片等一系列静态资源放在前端服务器上,并且控制页面的引用/路由/跳转,然后异步调用后端的接口,后端服务器使用Tomcat(Tomcat在此处是一个数据提供者),加快整体响应速度;
前端项目与后端项目是两个项目,放在两个不同的服务器上,需要独立部署。
转载于:https://www.cnblogs.com/yuanfei1110111/p/10136858.html