加载中 ...
首页 > 新闻资讯 > 经验心得 正文

理解本真的REST架构风格

2019-03-23 07:29:26 来源:沈阳软件公司 作者:沈阳软件开发

表述性状态转移(Representational State Transfer,简称REST)

  架构实例有HTTP/WebDAV。

  DO和RPC这两种架构气势派头在企业应用中很是普遍,而REST则是Web应用的架构气势派头,它们之间有很是大的差异。

  REST与DO的差异在于:

REST支持抽象(即建模)的工具是资源,DO支持抽象的工具是工具。在差别的编程语言中,工具的界说有很大差异,以是DO气势派头的架构通常都是与某种编程语言绑定的。跨语言交互纵然能实现,实现起来也会很是庞大。而REST中的资源,则完全中立于开发平台和编程语言,可以使用任何编程语言来实现。

DO中没有统一接口的观点。差别的API,接口设计气势派头可以完全差别。DO也不支持操作语义对于中心组件的可见性。

DO中没有使用超文本,响应的内容中只包罗工具自己。REST使用了超文本,可以实现更大粒度的交互,交互的效率比DO更高。

REST支持数据流和管道,DO不支持数据流和管道。

DO气势派头通常会带来客户端与服务器端的紧耦合。在三种架构气势派头之中,DO气势派头的耦合度是最大的,而REST的气势派头耦合度是最小的。REST松耦合的源泉来自于统一接口+超文本驱动。

  REST与RPC的差异在于:

REST支持抽象的工具是资源,RPC支持抽象的工具是历程。REST气势派头的架构建模是以名词为焦点的,RPC气势派头的架构建模是以动词为焦点的。简朴类比一下,REST是面向工具编程,RPC则是面向历程编程。

RPC中没有统一接口的观点。差别的API,接口设计气势派头可以完全差别。RPC也不支持操作语义对于中心组件的可见性。

RPC中没有使用超文本,响应的内容中只包罗新闻自己。REST使用了超文本,可以实现更大粒度的交互,交互的效率比RPC更高。

REST支持数据流和管道,RPC不支持数据流和管道。

由于使用了平台中立的新闻,RPC气势派头的耦合度比DO气势派头要小一些,可是RPC气势派头也经常会带来客户端与服务器端的紧耦合。支持统一接口+超文本驱动的REST气势派头,可以到达最小的耦合度。

  比力了三种架构气势派头之间的差异之后,从面向适用的角度来看,REST架构气势派头可以为Web开发者带来三方面的利益:

简朴性

  接纳REST架构气势派头,对于开发、测试、运维职员来说,都市更简朴。可以充实使用大量HTTP服务器端和客户端开发库、Web功效测试/性能测试工具、HTTP缓存、HTTP署理服务器、防火墙。这些开发库和基础设施早已成为了一样平常用品,不需要什么火箭科技(例如神奇昂贵的应用服务器、中心件)就能解决大多数可伸缩性方面的问题。

可伸缩性

  充实使用好通讯链各个位置的HTTP缓存组件,可以带来更好的可伸缩性。实在许多时间,在Web前端做性能优化,发生的效果不亚于仅仅在服务器端做性能优化,可是HTTP协议层面的缓存经常被一些资深的架构师完全忽略掉。

松耦合

  统一接口+超文本驱动,带来了最大限度的松耦合。允许服务器端和客户端程序在很大规模内,相对自力地进化。对于设计面向企业内网的API来说,松耦合并不是一个很主要的设计关注点。可是对于设计面向互联网的API来说,松耦合酿成了一个必选项,不仅在设计时应该关注,而且应该放在最优先位置。

  有的读者可能会问:“你说了这么多,REST岂非就没有任何弱点了吗?”固然不是,正如Fielding在博士论文中论述的那样,评价一种软件架构的优劣,不能脱脱离软件的详细运行情况。永远不存在适用于任何运行情况的、包治百病的银弹式架构。笔者在前面强调过REST是一种为运行在互联网情况中的Web应用量身定制的架构气势派头。

  REST在互联网这个运行情况之中已经占有了统治职位,然而,在企业内网运行情况之中,REST还碰面临DO、RPC的庞大挑战。特殊是一些对实时性要求很高的应用,REST的体现不如DO和RPC。以是需要针对详细的运行情况来详细问题详细剖析。可是,REST可以带来的上述三方面的利益纵然在开发企业应用时,仍然是很是有价值的。以是REST在企业应用开发,特殊是在SOA架构的开发中,已经获得了越来越大的重视。本专栏将有一篇文章专门先容REST在企业级应用中与SOA的联合。

  到了这里,“REST事实是什么”这个问题笔者就解答完了。本文开头那些说法是否准确,笔者照旧笑而不语,读者此时应该已经有了自己的判断。在接下来的REST系列文章中,我将会为读者澄清一些关于HTTP协媾和REST的常见误解。

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。