理解本真的REST架构风格
HTTP/1.1协议设计的极为乐成,以至于公布之后整整10年时间里,都没有几多人以为有修订的须要。用来指导HTTP/1.1协议设计的这套理论框架,最初是以备忘录的形式在专家组成员之间交流,除了IETF/W3C的专家圈子,并没有在外界普遍撒播。Fielding在完成HTTP/1.1协议的设计事情之后,回到了加州大学欧文分校继续攻读自己的博士学位。第二年(2000年)在他的博士学位论文Architectural Styles and the Design of Network-based Software Architectures中,Fielding更为系统、严谨地论述了这套理论框架,而且使用这套理论框架推导出了一种新的架构气势派头,而且为这种架构气势派头取了一个令人轻松愉快的名字“REST”——Representational State Transfer(表述性状态转移手机软件开发)的缩写。
在笔者看来,Fielding这篇博士论文在Web生长史上的价值,不亚于Web之父Tim Berners-Lee关于超文本的那篇经典论文。然而遗憾的是,这篇博士论文在降生之后的快要5年时间里,一直没有获得足够的重视。例如Web Service相关规范SOAP/WSDL的设计者们,显然不大明白REST是什么,HTTP/1.1事实是一个什么样的协议、为何要设计成这个样子。
这种情形在2005年之后有了很大的改善,随着Ajax、Ruby on Rails等新的Web开发手艺的兴起,在Web开发手艺社区掀起了一场重归Web架构设计本源的运动,REST架构气势派头获得了越来越多的关注。在2007年1月,支持REST开发的Ruby on Rails 1.2版正式公布,而且将支持REST开发作为Rails未来生长中的优先内容。Ruby on Rails的首创人DHH做了一个名为“World of Resources”的精彩演讲,DHH在Web开发手艺社区中的强盛影响力,使得REST一下子处在Web开发手艺舞台的聚光灯之下。
今天,种种盛行的Web开发框架,险些没有不支持REST开发的了。大多数Web开发者都是通过阅读某种REST开发框架的文档,以及通过一些例子代码来学习REST开发的。然而,通过例子代码来学习REST有很是大的局限性。由于REST并不是一种详细的手艺,也不是一种详细的规范,REST实在是一种内在很是富厚的架构气势派头。通过例子代码来学习REST,除了学习到一种有趣的Web开发手艺之外,并不能周全深入的明白REST事实是什么。甚至还会误以为这些简朴的例子代码就是REST自己,REST不外是一种简朴的Web开发手艺而已。就像瞽者摸象一样,有的人摸到了象鼻子、有的人摸到了象耳朵、有的人摸到了象腿、有的人摸到了象尾巴。他们都坚信自己感受到的大象,才是最真实的大象,而其他人的感受都是错误的。
对于不明白REST的Web开发者,人们习惯于展示一些例子代码来让他们明白REST,笔者不赞许上述做法。若是Web开发者想要深入明白REST是什么,就很难避开Fielding的这篇博士论文。笔者在本文中对于REST是什么的先容,也是基于Fielding的博士论文的。只管云云,笔者强烈建议本文的读者亲自去通读一下Fielding的博士论文(论文链接),就像想要相识孔子的头脑应该直接去读《论语》等著作,而不是首先去读其他人的转述一样。笔者在本文中也仅仅是起劲不做一个把经书念错了的歪嘴僧人而已。那么,下面我们言归正传。
在Fielding的这篇名为Architectural Styles and the Design of Network-based Software Architectures的博士论文(中文版名为《架构气势派头与基于网络的软件架构设计》)中,提出了一整套基于网络的软件(即所谓的“漫衍式应用”)的设计要领,值得所有漫衍式应用的开发者仔细阅读、深入体会。
在论文的前三章中,Fielding在批判性继续前人研究结果的基础上,建设起来一整套研究和评价软件架构的要领论。这套要领论的焦点是“架构气势派头”这个观点。架构气势派头是一种研究和评价软件架构设计的要领,它是比架构越发抽象的观点。一种架构气势派头是由一组相互协作的架构约束来界说的。架构约束是指软件的运行情况施加在架构设计之上的约束。
在论文的第四章中,Fielding研究了Web这样一个漫衍式系统对于软件架构设计提出了哪些需求。在第五章中,Fielding将第四章Web提出的需求详细化为一些架构约束,通过逐步添加种种架构约束,推导出来了REST这种新的架构气势派头。
REST架构气势派头的推导历程如下图所示:
图1:REST所继续的架构气势派头约束(原图可在这里下载)
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。