如何度量应用的RESTful成熟度

过去几年间,你很难去忽视使用RESTFul方法构建企业级应用变得越来越普及的事实。现在,人们似乎不再争论REST还是WS-*呢?,也不再谈论REST和SOA是否互补,而是转向讨论基于REST实现的成熟度了。不幸的是,即便是这一话题,也可能引起人们的迷惑、不同意见和争论。当谈及REST成熟度时,一些人常常会引用Richardson成熟度模型(Maturity Model),并视之为正确的度量方法。譬如,Martin Fowler在其最新的博文里就谈到了这一模型的几个级别。

  • 第一级:在架构中引入资源(Resource)的概念。
  • 第二级:支持HTTP动词。
  • 第三级:HATEOAS。

Martin这么说:

我还要强调,虽然[Richardson成熟度模型]是思考REST各种元素时很好的方法,但它却不能作为区别REST级别的定义。Roy Fielding已经清晰地做了定义——[Richardson成熟度模型]的第三级才是REST的先决条件。

Martin继续引用他与Ian Robinson的一次谈话,这此谈话使得双方在某些层面上达成一致:

[Ian]说他发现了这一模型里一些有意思的地方[……]即它与通用的设计技术的关系。
  • 第一级通过分治法(divide and conquer)解决复杂性问题,它将较大的服务端点分解成多个资源(Resource)。
  • 第二级引入一组标准的动词,这样我们就可以用相似的方法来处理类似的问题,这消除了不必要的不确定性。
  • 第三级引入可查找性,提供了使这一协议体现自描述性的手段。
其结果就是这样一个模型,它有助于我们思考我们要提供的HTTP服务,也有助于我们约束他们的使用者的期望。 2011大智慧下载

虽然该模型看上去有一些支持者,但是REST社区中持反对意见者也不在少数。比如,在这篇同样引用了Roy关于怎样才称为RESTful系统的论文的文章中,作者说:

因此,根据Roy的严格规定,超媒体(hypermedia)是REST的先决条件。任何其他东西不应该自我标榜为REST。如此,该成熟度模型看起来应该是这样的:
  • 第一级:非REST
  • 第二级:非REST
  • 第三级:REST

不过,有一评论指出:

事实上,如果你漏掉“任何”该[成熟度模型]的级别,最后都不是REST(不过我喜欢将“HTTP动词”替换成“一组预定义的,广泛认可的动词”)。可是从实现的角度看,你不能跳过第一级就达到第三级,所以,我认为这个次序是能说的过去的。 商账追收

如今,《RESTful Web Services Cookbook》一书的作者Subbu Allamaraju也加入了这一论战,他最近写了一篇有关使用Richardson成熟度模型的博文。事实上,他开篇就说不能使用该模型作为判断应用的RESTful成熟度的尺度。他说:

根据应用所支持的REST限制,而非它有没有选择正确的限制来满足其应该的质量属性,这种判断是毫无意义的。就好比一个应用选择 RDBMS而非NoSQL存储,在没有弄清作出这一选择所基于的原因之前就贸然地批评它一样。认为应用一旦使用了超文本限制,它获得了“REST的优 点”,同样很傻。真正重要的是它是否实现了该应用应该达到的质量属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值