如何理解 REST 约束中的那条“分层系统( Layered System)” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
justdoit123
V2EX    API

如何理解 REST 约束中的那条“分层系统( Layered System)”

  •  
  •   justdoit123 2017-04-07 01:43:15 +08:00 3790 次点击
    这是一个创建于 3184 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我觉得 REST 的其它 5 个约束:请求由客户端发起、会话状态由客户端维护、响应内容可缓存、统一接口、按需代码,都挺好理解的。但是唯独“分层系统( Layered System ):通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的。”(引用自维基百科) 这一条是怎么都理解不了。

    1. 这里提到的组件指的是什么?一个 Model 还是一个服务?
    2. 这里的“紧邻层”又是什么?这里“层”的概念是什么?
    3. 为什么要分层系统?(如果前两个明白了,这个可能也就迎刃而解了)
    6 条回复    2017-04-07 10:09:37 +08:00
    justdoit123
        1
    justdoit123  
    OP
       2017-04-07 01:44:40 +08:00
    补充一句,我去谷歌搜索出来的资料,对这一条约束的解释基本都是像维基百科那样一笔带过。各位能否给个形象、具体的解释?
    sivacohan
        2
    sivacohan  
    PRO
       2017-04-07 08:39:36 +08:00
    没啥形象解释。和面向对象一样,也是一种系统设计 /架构思想。
    这个描述在 UNIX 里面比较常见。记不清是《 UNIX 编程思想》还是《 UNIX 高级环境编程》里面看到的了。
    紧邻层这个说法我没听过,不过看你描述挺像胶合层的。
    基本逻辑就是一个程序干好一件事,一个输入,一个输出。两个程序想要组合,利用胶合层。类似管道, tee 之类的东西。
    libook
        3
    libook  
       2017-04-07 08:45:43 +08:00
    首先, REST 只是一种 API 的设计风格,具体还要根据业务特点和应用场景进行选择和定制。

    降低系统复杂度的两个基本方法就是分层和解耦。

    举个例子,一种系统层级方案是 路由-控制器-数据模型-数据库 ,那么对于路由层来说,它只能看到控制器层,并且可以调用控制器曾的任何一个控制器,路由不能看到数据模型层甚至数据库层,也不能对他们进行任何调用和操作,这样路由层的程序只需要了解控制器层的接口以及如何调用就可以了,不需要关心控制器层是如何第哦啊用数据模型层的。

    类似的思想与 REST 结合起来,我能想到的比较贴切的例子是微服务。

    比如一套服务系统的分层方案是 订单服务-支付服务-账户服务-用户服务 ,那么每两层之间是使用 RESTful 的 WEB API 进行通信的,同时订单服务也只能访问到支付服务,而不能访问到账户服务,也只需要关心支付服务的接口,而不需要关心支付服务是如何调用账户服务的。

    不过看起来好像是系统架构相关的,和 API 设计没啥关系。。。

    你可以参考一下 https://github.com/ZhangBohan/http-api-design-ZH_CN
    baiyi
        4
    baiyi  
       2017-04-07 10:08:08 +08:00
    baiyi
        5
    baiyi  
       2017-04-07 10:08:26 +08:00
    baiyi
        6
    baiyi  
       2017-04-07 10:09:37 +08:00
    @baiyi #4 将就着看吧. 《架构风格与基于网络应用软件的架构设计(中文修订版)》 pdf 上截的图
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1027 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:58 PVG 02:58 LAX 10:58 JFK 13:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86