zoukankan      html  css  js  c++  java
  • 什么是中间件?

    中间件(英语:Middleware),是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛。如数据库、Apache的Tomcat,IBM公司的WebSphere,BEA公司的WebLogic应用服务器,东方通公司的Tong系列中间件,以及Kingdee公司的等都属于中间件。

    好吧,作为一个前端渣渣,看不懂。再看看百度百科吧,下面是一些相关中间件:

    • 企业服务总线(ESB : Enterprise Service Bus):ESB 是一种开放的、基于标准的分布式同步或异步信息传递中间件。通过 XML、Web Service接口以及标准化基于规则的路由选择文档等支持,ESB 为企业应用程序提供安全互用性。
    • 事务处理(TP:Transaction Processing)监控器:为发生在对象间的事务处理提供监控功能,以确保操作成功实现。
    • 分布式计算环境(DCE:Distributed Computing Environment):指创建运行在不同平台上的分布式应用程序所需的一组技术服务。
    • 远程过程调用(RPC:Remote Procedure Call):指客户机向服务器发送关于运行某程序的请求时所需的标准。
    • 对象请求代理(ORB:Object Request Broker):为用户提供与其他分布式网络环境中对象通信的接口。
    • 数据库访问中间件(Database Access Middleware):支持用户访问各种操作系统或应用程序中的数据库。SQL 是该类中间件的其中一种。
    • 信息传递(Message Passing):电子邮件系统是该类中间件的其中一种。
    • 基于XML的中间件(XML-Based Middleware):XML 允许开发人员为实现在Internet中交换结构化信息而创建文档。

    OK,到这里,还是一脸懵逼。。。别灰心,因为术业有专攻,中间件是一个比较宽泛的概念,我们缩小一下范围,了解一下web相关的中间件,简单点:

    • 将具体业务和底层逻辑解耦的组件。
    • 数据从底层到应用端的中转站。

    Node中间件

    说了这么多,好像并没有什么实质性的内容,都是一些抽象的概念,来点实际的,了解一下Node中间件。 近几年来,在企业开发中越来越推崇微服务架构,而它在不经意间却导致前端同学和后端同学之间关于 API 接口颗粒度的争吵,越来越多见:

    • 「你自己请求 2 个接口再组装不就行了?」 - 后端同学追求服务下沉和解耦。
    • 「少一次 HTTP 啊,加一个接口有那么难么?」 - 前端同学离用户最近,需要考虑用户体验灵活性。

    归结为一个问题:『服务端设计的接口究竟是面向 UI 还是只是通用服务?』

    BFF 的提出

    2015 年,Sam Newman 对此提出了 Pattern: Backends For Frontends,简称 BFF,国内也俗称为粘合层。

    可以看出,这一层一直都存在,只不过是由后端同学维护而已。 但我们知道,前端贴近用户侧,需求的变化太快了,后端同学来维护会很累。 在 BFF 理念中,最重要的一点是:服务自治,谁使用谁开发,即它应该由前端同学去维护。

    • 服务自治减少了沟通成本,带来了灵活和高效。
    • 自己吃自己的狗粮。
    • BFF 并不限制具体技术,团队根据自己的技术栈来选型: Java/Node/PHP/Python/Ruby...
    • 基于 GraphQL 技术的通用中间层网关,也是刚刚出现一种很不错的方案。
    • 在大部分前端团队中,都会倾向于选择生态更优,语法更熟悉的 Node.js 。

    为什么是Node?

    无它,就是需要这样的一个中间层,但后端同学不太想管了(也管不过来),所以大部分前端同学选择了一个更顺手的 Node.js ,仅此而已。

    那么,上Node?

    不,你需要根据你的业务场景,还有团队的技术架构,来具体情况具体分析。切记, BFF 不限制具体技术选型。 BFF 不可避免的会带来:研发成本一定程度上的增加,对开发者的能力要求增加

    Express中间件

    Express和Koa是目前最主流的基于node的web开发框架,他们的开发者是同一班人马。貌似现在Koa更加流行,但是仍然有大量的项目在使用Express,所以这里我们说说Express中间件的原理。以下所说中间件皆为Express中间件。

    中间件的功能和分类

    中间件的本质就是一个函数,在收到请求和返回相应的过程中做一些我们想做的事情。Express文档中对它的作用是这么描述的:

    执行任何代码。 修改请求和响应对象。 终结请求-响应循环。 调用堆栈中的下一个中间件。

    Express文档中把他们分为了五类,但是他们的原理相同,只是用法不同:

    应用级中间件 路由级中间件 错误处理中间件 内置中间件 第三方中间件

    用法

    非常简单。

    var express = require('express')
    var app = express();
    app.use('/user', function (req, res, next) {
      //TODO
      next();
    });
    app.listen(8080)
    
    

    总结: 面向前端的Node中间件并不能提高我们的应用性能,而是规范我们的开发流程,提高我们的工作效率,遇到问题能够更快的解决,至于是否使用,就要因地制宜了。



  • 相关阅读:
    day 66 crm(3) 自创组件stark界面展示数据
    day 65 crm(2) admin源码解析,以及简单的仿造admin组件
    用 Python+nginx+django 打造在线家庭影院
    django -admin 源码解析
    day 64 crm项目(1) admin组件的初识别以及应用
    云链接 接口不允许 情况 解决方法 mysql Host is not allowed to connect to this MySQL server解决方法
    day 56 linux的安装python3 ,虚拟环境,mysql ,redis
    day55 linux 基础以及系统优化
    Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换
    Codeforces 990 调和级数路灯贪心暴力 DFS生成树两子树差调水 GCD树连通块暴力
  • 原文地址:https://www.cnblogs.com/kkdn/p/9262858.html
Copyright © 2011-2022 走看看