(一)什么是中间层
中间层(Middle Tier)也称作 应用程序服务器层 或 应用服务层,是 用户接口 或 Web 客户端 与 数据库 之间的逻辑层。
(二)图解
中间层简单说就是在 客户端 和 服务端 之间架起来的一层。
(三)什么是中间件
中间件可以理解为一个对用户请求进行过滤和预处理的东西,它一般不会直接对客户端进行响应,而是将处理后的结果传递下去。
我们可以把中间件理解为一个实现某种特定功能的插件,用于扩展功能
1. 封装了一些处理一个特定事件的功能函数
2. 非内置的中间件需要 npm 安装
3. 封装了一些复杂但是通用的功能
(四)为什么要使用中间层
中间层是架构实现的一种方案,中间件是某种功能的封装~
安全方面:
1. 对服务器有一定的保障
如果不使用中间层,后端(服务端)的接口直接暴露在用户面前,有黑客攻击的话,能拿到服务器ip。使用中间层透传一下,可一定程度上保障服务器的安全,黑客即使拿到了ip,也不会直接攻击到服务器
2. 提升了开发效率
比如说表单验证,传统的方式,前端做一次校验,后端也要做一次校验,如果使用了中间层,前端做一次校验、中间层做一次校验就行了, 前端验证规则(js)在中间层(node)中也可以使用,一套代码就可以了。如果前端和后端同时验证,则需要两套验证规则。
3. 性能问题
node.js 事件驱动,非阻塞IO,天生异步
node.js 特点:
(1)轻量并且高效,在分布式设备运行数据密集型的实时应用
(2)node.js 单进程、单线程
(3)事件轮询实现并发操作:性能很好
传统的JAVA、PHP 会新开线程来处理请求,node.js 只有一个线程,没有办法新开线程。
JAVA或者PHP,一个线程大概需要2M的内存资源,8G服务器,可以同时处理4000个用户并发,如果访问量多,需要增加服务器,运行成本就上来了
node.js 不开辟新的进程,8G服务器,大约可以同时处理40000用户的并发
(五)为什么选用node做中间层
1. node 做中间层可以解决前端的跨域问题,跨域是浏览器的,服务端没有跨域问题
2. node 处理数据逻辑,前端专注页面渲染,实现真正意义上的前后端分离
后端只需要考虑接口如何实现,不需要嵌套前端代码,如果后端接口名称等不符合前端预期,前端可通过中间层透传更改接口名字
3. 跨系统或者跨终端,重用页面数据校验、逻辑代码,不需要重新写校验,中间层做校验,避免了前端和后端同时校验。