Loading... ## 1、前言 一直以来都很疑惑移动端APP是怎么根后端服务进行通信的,也不断产生了以下这些问题: - Web后端开发和APP后端开发有什么区别? - 后端开发常见的哪些HTTP服务器、Web服务器、应用服务器有什么区别?各自又是怎样协作的? - APP前端和后端是怎么进行通信的,后端一定要支持网络并发连接,这需要用到I/O多路复用,需要自己实现吗? - 后端框架和后端服务器之间的关系 ## 2、HTTP服务器、Web服务器、应用服务器 狭义上Web服务器只负责处理HTTP协议,用于处理静态页面的内容。而动态内容需要通过WSGI接口交给应用服务器去处理。 Web服务器最常见的是Nginx和Apache。 要理解什么是Web服务器,首先要理解什么是Web。Web可以简单理解为你看到的HTML页面,其中包含了Web的数据元素,而处理这些数据的服务器叫做Web服务器。它处理的信息包括:session、request、response、HTML、JS、CSS等。同时,这些数据都可以用HTTP协议进行处理,因此Web服务器也可以被叫做HTTP服务器。 接下来讨论之前提到的WSGI和应用服务器。 应用服务器处理的是非常规Web页面,它处理动态数据的请求。以Java为例,你自己学习Java SE写的代码只能运行在你的本地环境,但如果你想把代码/项目部署在服务器上供其他人访问,你需要找一个容器来运行你的代码,而这里的容器指的就是应用服务器,Java最常用的应用服务器是Apache开源的Tomcat服务器。当我们将代码部署到Tomcat应用服务器上,用户该怎么访问呢?是直接访问应用服务器吗?不是的,这时候需要用到HTTP服务器(以Nginx为例),Nginx将HTTP请求都收集起来,然后将这些动态请求向对应的应用服务器做转发。 比如Nginx收到了1w个请求,其中有3k个请求要求请求Tomcat上的某个接口,那么Nginx服务器直接将这个请求通过WSGI转发给应用服务器。应用服务器监听的端口收到这个请求之后,把HTTP的数据取出来做处理,最终将处理好的信息发给Nginx,再由Nginx返回给用户。 还有一个问题,用户直接和应用服务器通信不好吗,为什么还要经过一层HTTP服务器?从功能实现上来说是可以的,应用服务器一般也集成了HTTP服务器的功能,但由于在实际的生产环境中还需考虑到负载均衡、cdn加速等问题,我们需要一个HTTP服务器暴露在整个后端的最外层,对接收的请求进行转发。 WSGI(Web服务器网关接口)架起了Nginx这种静态服务器与应用服务器之间桥梁。 ## 3、Web后端开发和APP后端开发区别与联系 首先给出结论:Web后端开发和APP后端开发基本过程上是一样的,只不过二者返回的数据不一样。 浏览器访问Web后端返回的是一个HTML页面,以及少部分json数据。而一般APP后台开发大部分直接传输json格式数据。还有一个不同点在于登录验证和数据加密,一般Web是使用session验证登录状态,而APP则使用token来验证登录状态(token是自己定义一个和用户ID相关的加密字符串,传入后台后从数据库查询用户信息)。如果对数据的安全性要求较高,APP传输数据可能会对数据进行加密,而Web一般没有加密这一步而是使用HTTPS。 ## 4、APP和后端如何进行通信 后端设计API,然后将API的URI提供给客户端,APP构造HTTP请求访问API即可。API的描述方式有很多种,比如REST。 ## 参考资料 【1】[app后台开发入门](https://blog.csdn.net/weixin_36571185/article/details/70269448) 【2】[关于Nginx+Gunicorn+uwsgi+后端框架到app架构梳理和思考](https://www.cnblogs.com/piperck/p/5150115.html) 【3】[#凌乱了# python web中web框架、web服务器、http服务器、应用服务器、WSGI容器傻傻分不清楚!](https://segmentfault.com/q/1010000007270099) 【4】[常用 J2EE 应用服务器比较](https://blog.csdn.net/qq1175421841/article/details/52280652) 【5】[[译] 作为一个 Python 开发者需要知道的服务器知识](https://toutiao.io/posts/ubbkz/preview) 【6】[慕课——App后台极速开发](https://www.bilibili.com/video/BV1ms411r75L?p=1) Last modification:March 8th, 2022 at 05:26 pm © 允许规范转载
One comment
技术文章,学习了。
80% WordPress/Typecho,都是在讲开发