• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaoba25
V2EX  ›  程序员

前端和后端中间的部分一般习惯叫做什么

  •  
  •   xiaoba25 · Jul 11, 2022 · 14145 views
    This topic created in 1576 days ago, the information mentioned may be changed or developed.

    如图:

    前端和后端比较好理解,但一般为了还会在中间增加一层。

    用于将后端的映射为页面直接可以使用的接口。

    这部分叫做什么呢

    114 replies  •  2022-08-16 17:26:47 +08:00
    1  2  
    ❮ ❯
    233373
    233373
    Jul 11, 2022
    1
    它夹在中间,我也不知道他叫什么
    iikebug
    iikebug
    Jul 11, 2022
    2
    中台
    cweijan
    cweijan
    Jul 11, 2022❤️1
    3
    不是一般叫做中间件吗
    ktqFDx9m2Bvfq3y4
    ktqFDx9m2Bvfq3y4
    Jul 11, 2022 via iPhone❤️5
    4
    api Gateway ?
    TomatoYuyuko
    TomatoYuyuko
    Jul 11, 2022
    5
    controller
    churchill
    churchill
    Jul 11, 2022
    6
    middle tier?
    WTF-end 😄
    aneostart173
    aneostart173
    Jul 11, 2022
    7
    beffe?
    daveze
    daveze
    Jul 11, 2022❤️6
    8
    bff? Backends For Frontends
    liliclinton
    liliclinton
    Jul 11, 2022❤️3
    9
    BFF
    nomagick
    nomagick
    Jul 11, 2022
    10
    disability
    panlatent
    panlatent
    Jul 11, 2022 via iPhone
    11
    只按这个图里中间的就是后端的东西,图画的应该不太对吧
    qrobot
    qrobot
    Jul 11, 2022
    12
    Middleware
    BiChengfei
    BiChengfei
    Jul 11, 2022
    13
    代理层
    pengtdyd
    pengtdyd
    Jul 11, 2022
    14
    bff
    DawnMoon
    DawnMoon
    Jul 11, 2022❤️17
    15
    这就是后端的一部分而已,不要额外解读
    xiaoba25
    xiaoba25
    OP
    Jul 11, 2022
    16
    每个人不同的叫法😂
    xiaoba25
    xiaoba25
    OP
    Jul 11, 2022
    17
    @panlatent 一般中间这块是前端工程师来完成 后端一般会用 java 、golang 等 所以这里暂时放在了「?」 这一层
    nothingistrue
    nothingistrue
    Jul 11, 2022❤️1
    18
    nodjs 、php (移除后端之后),就是前端,你的图画的不对。如果是服务器渲染,那应该是:浏览器——前端——后端。

    用于将后端的核心服务,映射为页面直接可以使用的接口的东西,这个可以是后端的接口层,也可以是前端的转换层,并不需要单独弄个端。但是如果在后端接口与前端之间,又专门弄了个鉴权、负载均衡的服务,那这个是网关。
    hay0577
    hay0577
    Jul 11, 2022❤️4
    19
    前端管这个叫 也是后端负责层

    后端管这个叫 运维应该知道层
    musi
    musi
    Jul 11, 2022
    20
    前端一般管这叫 BFF
    Envov
    Envov
    Jul 11, 2022❤️1
    21
    BFF - Backend for Frontend
    murmur
    murmur
    Jul 11, 2022
    22
    @iikebug 说反了,最底层的那一大坨才叫技术中台,上面是业务
    ethusdt
    ethusdt
    Jul 11, 2022
    23
    可以是个 webhook 比如 amazon lambda
    charlie21
    charlie21
    Jul 11, 2022
    24
    前端
    intmax2147483647
    intmax2147483647
    Jul 11, 2022
    25
    BFF
    zhaol
    zhaol
    Jul 11, 2022
    26
    BFF
    panlatent
    panlatent
    Jul 11, 2022 via iPhone
    27
    @leiuu

    得看具体场景再谈怎么划分,你说前端工程师完成,那也得看完成什么。
    daliusu
    daliusu
    Jul 11, 2022
    28
    gateway
    FrankHB
    FrankHB
    Jul 11, 2022
    29
    搞编译器的,夹在前端和后端中间的东西正经的叫法就叫中端(midend)。
    CPU 流水线里的前端和后端就接了个 buffer 。大约是因为跨 ISA 翻译之类不流行以及加流水级代价太大的关系,翻译指令的也都直接算成了前端。
    但你说的这块就算是 Web 传统后端的一部分,虽然有一部分抽出来当中间件了。反正跟 Web agent 不捆绑在一起的东西习惯上都不会叫做前端,市场上招前端的也不大会强制要求熟悉这个。
    以前前端页面以后的这些东西都是后端工程师来做,像 PHP/JSP/AST 这样并列的 server page 就是“后端页面”。Node.js 也是做的服务器应用,恰好方便前端工程师少学点语言罢了。后来大约是鼓吹前后端分离,发现一些 server page 里不少 view 的成分,外加前端工程师比较膨胀,为了增加人力利用率,就让前端工程师去折腾这种东西了。
    dudubaba
    dudubaba
    Jul 11, 2022
    30
    BFF ( Backend for Frontend )或者前端中间层,大部分是 KPI 产物,前期用的很爽,后面但凡换两个人接手就是大坑。
    batilo
    batilo
    Jul 11, 2022
    31
    中间件
    lujiaosama
    lujiaosama
    Jul 11, 2022
    32
    bff 胶水层, 但有点脱裤子放屁的意味, 业务变动还得多修改一层.
    dayeye2006199
    dayeye2006199
    Jul 11, 2022 via Android
    33
    强行分出层
    fuchish112
    fuchish112
    Jul 11, 2022
    34
    我认为还是属于后端的一部分,这部分是做业务的聚合,因为动态语言的开发效率相对较高,尤其针对快速变化的需求,特别合适
    xiaoba25
    xiaoba25
    OP
    Jul 11, 2022
    35
    谢谢各位,结合大家的讨论,感觉这块目前并没有专门的名称。
    依据实际场景,则倾向于叫做 api gateway (统一 API 网关) 或者是 BFF (前者变种,不同平台设计不同的 BFF )。
    urlk
    urlk
    Jul 11, 2022
    36
    中端
    a852695
    a852695
    Jul 11, 2022
    37
    网关有点牵强了,还是看其功能定位。
    1 、如果定位是数据处理,那么就是数据中间层。
    2 、如果定位是权限、第三方认证等,那么就是中间件,或者网关。
    dcsuibian
    dcsuibian
    Jul 11, 2022
    38
    中间为啥要放个 Nodejs ?
    h1104350235
    h1104350235
    Jul 11, 2022
    39
    网关或者中间层
    一般是数据处理或者权限之类的吧
    37 楼的回答
    pkoukk
    pkoukk
    Jul 11, 2022❤️2
    40
    中间放 nginx 叫 gateway
    中间放 nodejs 叫 BFF ,建议前者
    karloku
    karloku
    Jul 11, 2022
    41
    看中间那层是谁开发的. 前端开发的就是 BFF, 其他人开发 /维护的就是 gateway
    JackCh3ng
    JackCh3ng
    Jul 11, 2022
    42
    这难道不是路由吗?
    把现成的框架都拿掉,自己处理前端请求的时候不就是 if 判断什么 path ,然后调用相应后端方法处理吗?
    我怎么听不懂大家在说什么……
    Felldeadbird
    Felldeadbird
    Jul 11, 2022
    43
    看图来说是后端。因为中间那层貌似不参与前端渲染。
    nash
    nash
    Jul 11, 2022
    44
    胶水层
    james2013
    james2013
    Jul 11, 2022
    45
    中端
    tcpdump
    tcpdump
    Jul 11, 2022
    46
    中出端
    raptor
    raptor
    Jul 11, 2022
    47
    @tcpdump 还是你最优秀
    nicholasxuu
    nicholasxuu
    Jul 11, 2022
    48
    聚合层
    libook
    libook
    Jul 11, 2022
    49
    现在一般都叫 BFF 吧。

    不过前后端是个相对概念,在不同范围内可以指不同的东西。比如可以把客户端视为前端,把服务器视为后端;但如果单看客户段范围内的话,负责用户呈现和用户交互的部分可以视作为前端,负责数据处理和与服务器通信的部分可以视作为后端;单看服务器范围内的话,BFF 可以被视作前端,中台等底层服务可以被视作后端。
    humpy
    humpy
    Jul 11, 2022
    50
    aggregator
    ScepterZ
    ScepterZ
    Jul 11, 2022
    51
    网关
    daliusu
    daliusu
    Jul 11, 2022
    52
    @dcsuibian 其实放个啥都行,我这边是因为“后端”并不只是给前端开发的,还有一些其他,比如客户端(某种意义也算前端吧)或者是外部系统也要访问,所以没法把所有的业务逻辑都糅杂进他们自己代码里,就加了一层去分别做面向各个其他外部需求的层,这个东西一般谁写前端谁负责,web 前端这块之前也是后端在适配就要用的 go ,现在前端负责就是 node 了,算法他们用 python 做的。
    xumng123
    xumng123
    Jul 11, 2022 via iPhone
    53
    网关
    grewer
    grewer
    Jul 11, 2022
    54
    我司是叫 gateway
    bsg1992
    bsg1992
    Jul 11, 2022
    55
    中间层
    kongkongyzt
    kongkongyzt
    Jul 11, 2022
    56
    在腾讯一般是叫接入层
    pcbl
    pcbl
    Jul 11, 2022 via Android
    57
    中间这个叫产品经理
    yunyuyuan
    yunyuyuan
    Jul 11, 2022
    58
    想到了今天在煎蛋上看到的:![]( https://imgur.com/a/WEGwlZB)
    adoal
    adoal
    Jul 12, 2022 via iPhone❤️5
    59
    在我们这些老不死的棺材瓤子眼里,运行在浏览器的是就前端,运行在服务器的就是后端,很简单的界定标准,至于 BFF 什么的说法都是争权夺利和 KPI 瞎搞。
    Quarter
    Quarter
    Jul 12, 2022 via iPhone
    60
    我觉得网关比较贴切一些
    LeeReamond
    LeeReamond
    Jul 12, 2022 via Android
    61
    网关吧
    GP1
    GP1
    Jul 12, 2022❤️1
    62
    大公司:BFF (Backend for Frontend)
    小公司:API Gateway
    BruceXu
    BruceXu
    Jul 12, 2022
    63
    这...现在后端返回数据页面都不能直接使用了?还能再懒点吗?
    E2gCaBAT5I87sw1M
    E2gCaBAT5I87sw1M
    Jul 12, 2022
    64
    中端
    EvansUtopia
    EvansUtopia
    Jul 12, 2022
    65
    叫烂活
    woodensail
    woodensail
    Jul 12, 2022❤️1
    66
    @xubingok 不是懒的问题,自从流行业务中台后,各中台系统只负责自己的模块,到了前端可能一个页面几十个接口,而且还都互相依赖,至少三四轮请求才能拿到所有数据。这时候有一个系统做接口聚合就很重要了。我们这边一般把这个叫做前台。
    前端=>前台=>中台=>数据库
    lanten
    lanten
    Jul 12, 2022
    67
    @EvansUtopia 哈哈哈啊哈哈
    beryl
    beryl
    Jul 12, 2022
    68
    我们之前把他归到前端,统一称为大前端,或者叫路由层
    wanacry
    wanacry
    Jul 12, 2022 via iPhone
    69
    后端接口给前端不能直接使用吗,为什么还要加一层
    wanacry
    wanacry
    Jul 12, 2022 via iPhone
    70
    后段跟前段不联调的吗?直接啥接口都返回所有字段?
    wanacry
    wanacry
    Jul 12, 2022 via iPhone
    71
    @woodensail #65 直接让后段聚合啊 哦不过这有涉及到话语权的问题了
    dandankele
    dandankele
    Jul 12, 2022
    72
    中间这部分啊。。有前端也有后端
    要是前端用 node 做 SSR 渲染,调用接口,这部分叫前端,毕竟涉及页面渲染要写 html 样式等,接口若是 PHP 写的,那 PHP 的部分叫后端,只不过 java 这些的更偏后端,PHP 顶多做一些简单的业务逻辑,或者 PHP 聚合 java 写的服务
    woodensail
    woodensail
    Jul 12, 2022❤️1
    73
    @wanacry 以电商为例,一个商品详情页光核心数据就涉及商品系统、库存系统、价格系统、促销系统等,还有数不完的边缘系统,你找谁对接?
    当然,你可以找一个人帮你把这些复杂的系统都包一层,合并为一个接口跟你联调,这个系统就是答主问的东西。
    wanacry
    wanacry
    Jul 12, 2022 via iPhone
    74
    @woodensail #72 原如此
    wanacry
    wanacry
    Jul 12, 2022 via iPhone
    75
    主要是后段接口负责的人太多,前端不好找人
    eslizn
    eslizn
    Jul 12, 2022
    76
    是楼主这个图画的不对,中间的就是后端,图中的 [后端接口] 应该归类到 paas
    mio4kon
    mio4kon
    Jul 12, 2022
    77
    胶水层?
    southsala
    southsala
    Jul 12, 2022
    78
    前后端是指 B/S 结构,严格来说叫浏览器和服务器,放在浏览器的部分就是前端,放在服务器的部分就是后端,没有什么中间部分
    alen0206
    alen0206
    Jul 12, 2022
    79
    bff
    xiaowei7777
    xiaowei7777
    Jul 12, 2022
    80
    接入层
    rb6221
    rb6221
    Jul 12, 2022
    81
    你这图画错了吧
    按你的画法,中间那一层是 php/node ,那右边应该是数据层啊,中间那一层才是后端,从右边取数据的
    wanguorui123
    wanguorui123
    Jul 12, 2022
    82
    Proxy
    hackersli
    hackersli
    Jul 12, 2022
    83
    中间件,BFF ,网关···
    fifa899
    fifa899
    Jul 12, 2022
    84
    网关.校验层吧.一般加个 appid .统一做合法请求校验
    q474818917
    q474818917
    Jul 12, 2022
    85
    gateway 、或者 bff
    zthxxx
    zthxxx
    Jul 12, 2022
    86
    接口 (雾
    zhuweiyou
    zhuweiyou
    Jul 12, 2022
    87
    装 X 叫 BFF,口语叫聚合
    xiaoba25
    xiaoba25
    OP
    Jul 12, 2022
    88
    @eslizn
    @janus77

    图中的后端是一系列的接口,这些接口会具体对接数据库等。#73 的同学讲的比较清楚。
    php/nodejs 这一层主要是基于「后端」接口做一些聚合,组合,返回适配前端页面等等。
    哈哈,这也是迷惑点。目前看来 BFF 「用于前端的后端」较为贴切。😂
    Hjxxx
    Hjxxx
    Jul 12, 2022
    89
    网关
    Hjxxx
    Hjxxx
    Jul 12, 2022
    90
    @wanacry 不是这个开发人员原因,是架构模式问题,中台都普遍会带网关管控所有中心,限流、鉴权、负载、转发等,甚至做聚合、编排。
    libook
    libook
    Jul 12, 2022
    91
    @leiuu #33 架构设计上都不是绝对的,而且随着一个项目的发展,系统架构会发生变化,一个组件的定位也可能会改变,叫法也随之改变。

    叫啥取决于你们现在觉得它更贴近哪种功能,比如:

    应用 BFF 的场景通常是这样的:一套后端服务同时被多个前端产品对接(如 QQ 和 TIM ),如果将多个前端产品的后端 API 都混合在一起,会增加接口的复杂度和管理难度,而且针对一个前端产品的修改会有更大的可能影响其他产品;那么就可以引入 BFF ,后端开发团队负责提供统一且灵活的 API ,由各个前端产品的开发团队负责在这些 API 的基础上针对前端产品对 API 进行组合、转换,同时添加一些仅本前端产品会用到的一些专用 API 。

    应用 API 网关的场景通常是这样的:产品由多个后端服务提供功能,但每个服务都需要做相同的处理,如安全、认证与鉴权、监控,或仅仅希望使用统一的域提供这些 API 来简单解决一些浏览器的安全限制,这时候就可以引入 API 网关,主要作用是聚合多个服务的 API ,以及应用统一的中间件。

    上一段提到了中间件,恩,这个地方也可能是个中间件,当然中间件这个概念的定义是有些争议或迁移引申的,这个主题里就不进行讨论了。我所遇到的情况通常是有个组件不大关心业务逻辑,提供可以用于任何服务的一些基本能力,比如你的前端是成千上万个智能硬件,每隔一段时间上报状态数据,为了削峰填谷可以在前后端之间放个消息队列中间件(可以是现成的产品也可以是自己实现的),后端匀速消费这些消息来处理业务。

    还有一种情况,就是后端本身是可以分层的,比如多个业务的服务都可能调用同一个短信网关服务来给用户发短信,这个短信服务就在其他服务的底层。这种情况下都可以叫后端服务。

    当然,也可能会存在一个组件同时具备多项功能的情况,或者多种组件排列的情况,又或者是由于项目本身特殊性而存在的特殊功能和特殊名称的组件。
    xuelu520
    xuelu520
    Jul 12, 2022
    92
    bff 吧,可以做接口的聚合
    leechg
    leechg
    Jul 12, 2022
    93
    还是后端
    magichacker
    magichacker
    Jul 12, 2022
    94
    太监,哈哈哈
    izgnod
    izgnod
    Jul 12, 2022 via iPhone
    95
    bff or gateway
    psterman
    psterman
    Jul 12, 2022
    96
    前戏
    qhkobold
    qhkobold
    Jul 13, 2022
    97
    bff (Back-end For Front-end)也可以叫做聚合层
    qwqaq
    qwqaq
    Jul 13, 2022 via iPhone
    98
    在两层之间加入中间层,实现两层的松散耦合
    BruceXu
    BruceXu
    Jul 26, 2022
    99
    @woodensail 还是懒的问题..
    后端一通扯,整出个聚合的工作,然后丢给前端?
    我前端就要页面展示需要的数据.后端什么架构,什么业务中台只负责自己模块,于我前端何干?
    woodensail
    woodensail
    Jul 27, 2022
    100
    @xubingok 合着别人写的内容你是你是一句不看啊。前端为了实现快速打开必须减少多层接口依赖请求的情况,这时候就必须靠前台服务来请求,毕竟服务器内部互相请求速度可比客户端发起请求快多了。
    至于你说的偷懒的问题更是不存在,至少在我呆过的公司,这个前台服务是和前端开发归属于同一个部门的,甚至有些项目就是由前端人员自己用 nodejs 来实现。最终活儿还在自己手上。

    所以无非是个为了解决现实需求而做的技术选型,到你这儿就成了办公室斗争了。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 190ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    ♥ Do have faith in what you're doing.