REST字面意思是表示性状态转移,它是一种充分利用Http协议的BS架构风格.为什么这么讲呢?我们看看Roy Thomas Fielding博士对于REST机构风格的定义.REST架构风格是一种组合架构风格:
1)REST整体架构上使用CS风格,这种风格其实也是BS架构风格的基础风格;
2)REST在服务端采用无状态架构风格,无状态(面向非连接)也是BS架构风格典型特点,传统的CS架构一般都是有状态的,是面向连接的.
3)缓存风格:在服务端提供必要的缓存风格,以提高系统性能.缓存风格是一种常见的架构设计风格,目的是解决系统各部分之间的由于访问速度差异而导致的部分资源无法充分利用的问题,例如CPU的高速缓存,内存的设置都是这个目的.BS风格和传统CS风格都会采用这种机制.
4)统一接口:统一接口其实是相对的,在不同层次上统一接口的代价也是不同的,层次越低代价越大,层次越高,代价越低.REST架构风格要求在组件层上采用统一架构风格,从而简化整体架构.REST风格中的这种接口统一是针对WEB开发的,目的是简化站内子系统之间和站间系统之间的访问.
5) 分层系统:分层的好处是可以使得每一层的组件仅仅依赖于与之交互的紧邻层,而且分层系统本身就要求对其它层提供服务的接口应该统一而稳定.因此这种风格可以简化系统的复杂性(每一层只需要专注于本层逻辑,而且修改也只会影响紧邻层,不会导致蔓延问题),提高了系统的灵活性(原因非常简单,只要保持稳定的接口,替换和重新实现某一层组件都非常用意),C跟S本身就是分层的,这里的分层风格约束,主要是指S端(C端因为是基于脚步解释,而且多为展示,分层相对受限),而S端的分层可以采用MVC,其中对于M还可以分解为业务逻辑层,数据访问层,数据库访问层.分层风格的缺点是由于层次增加会带来性能上的消耗,需要利用共享缓存来弥补分层所带来的性能上的损失.
6)按需代码:这种风格最大好处在于部署和动态行为方面.采用这种分格,客户端可以根据需要下载代码(JS脚本,Applet,ActiveX等).但这种风格能否实现的前提是客户端可以执行或者解释执行下载的代码.
WEB系统的目的是共享和传递信息,REST风格将所有信息都抽象为一种资源,并给定一个唯一的标识(URI).需要注意的是这里的资源不是一类,而是具体的资源实体或者实体集合,例如对于客户来说,一般情况下不能看作是一种资源,而所有客户,华北地区的客户,客户张三则可以视为一种资源,而且都各自有唯一标识.不人为地通过类型和实现来区分资源的好处是可以简化访问的语义理解,访问者除了需要知道要访问的资源的URI,其余的都不用关心(本质上来讲这其实是有意义编码,无意义编码和混合编码之间的区别).而且URI所代表的资源可以是静态映射的(2010年10月1日的天气)的,也可以是动态映射的(今天的天气).
REST风格通过URI访问得到的信息是自我描述的,包括了信息本身和表示方式(html,xml,媒体数据流等).信息的描述是采用最通用的协议-HTTP(超文本转换协议)来进行的.客户端根据信息的表示解析和展示信息本身.而交互是通过HTTP的几个基本操作(GET,PUT,POST,DELETE)来实现.
一些看法:
1) REST与MVC(至少对于微软的Aspnet MVC而言)架构风格并不矛盾,他们之间并不存在谁替换谁的问题;
2)REST风格非常适合站间或者企业间集成应用,比WebService,Corbra,DCOM,JRMI都要简单通用;
3)如果将URL地址后的参数看作是URL本身的一部分,那么每一个URL都代表一个唯一的资源(URI),而用/来标识参数和用?部分标识参数其实是等价的,但对外来说,用/要简单些;
4)REST的核心在于充分利用Http协议;
5)REST返回的数据及表示或者动态代码需要客户端解释,有利也有弊,不利的地方当然是性能和“非强类型”;
6)如果采用RESTfull,一个随之而来的是URI泛滥和URI体系表达设计的复杂性问题,因此原作者对此风格的建议是用于粗粒度应用;
7)REST架构风格所假定的资源状态相对简单,并不适合资源状态非常复杂的应用(不是不可以,是不适合);
8)REST的天生支持分布式架构,其实是Http协议和BS架构风格所决定的;
PS:有些认为有面向URI设计,这跟测试驱动开发一样,都是概念性东西多一些,本质上其实都是面向需求设计.
PS:微软的MVC估计是在Roy博士发表文章之后做的设计,里面带有很强的REST风格.
分享到:
相关推荐
但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。 另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要...
在深入探讨“基于REST架构风格的Web+20实现”这一主题之前,需要先了解REST(Representational State Transfer)架构风格的基本概念以及Web 2.0的相关技术背景。 REST是一种软件架构风格,最初由Roy Fielding在他的...
基于REST架构风格的云物理服务器部署机制.pdf
**REST(Representational State Transfer,表述性状态转移)**是一种软件架构风格,广泛应用于Web服务的设计,特别是互联网应用程序。REST风格的架构强调简洁、高效和可扩展性,它基于HTTP协议,利用其固有的方法...
"REST 架构风格" REST 架构风格是一种互联网应用构架风格,由 HTTP 协议的作者 Roy Fielding 博士在其博士论文中提出。与以远程对象为核心的 ORB 和以服务为核心的 SOA 相比,以资源为核心的 REST 让我们从崭新的...
REST 架构风格详解 REST 架构风格是基于资源的架构风格,它强调面向资源的设计和开发方式。RESTful 是一种满足 REST 架构风格约束条件和原则的应用程序或设计。其核心是面向资源,REST 专门针对网络应用设计和开发...
首先,标题《架构风格与基于网络的软件架构设计(REST)》点明了文档的主题是关于软件架构风格,尤其是与网络相关的软件设计,并重点介绍了REST架构风格。REST是一种软件架构风格,它由Roy Thomas Fielding博士在其...
REST,即Representational State Transfer(表示层状态转移),是一种架构风格,主要应用于Web应用程序的设计,由HTTP协议的主要设计者Roy Fielding提出。...理解并掌握REST架构风格,对于Web开发者来说至关重要。
REST架构风格基于一组网络架构原则和约束,它们定义了如何使用HTTP、URI和相关的Web技术来构建可交互的服务。REST的核心在于资源的抽象,每个资源都可以通过一个唯一的URI来标识,而对资源的操作则通过标准的HTTP...
在REST(Representational State Transfer)架构风格中,API被视为一组资源,通过HTTP方法(GET、POST、PUT、DELETE等)进行操作。Falcon框架完全支持这些标准,使开发者能够快速地构建符合REST原则的应用程序。它...
- 架构风格理解不足:一些开发者可能片面从技术实现角度出发,没有充分理解REST架构风格的重要性。 - 描述复杂业务的困难:REST风格可能难以精确描述复杂的业务逻辑。 - 缺少对M2M的理解:开发团队可能过度陷入REST...
文中还特别提到了REST架构风格,这是由Roy Thomas Fielding博士提出的一种适用于网络应用的软件架构风格。REST代表表现层状态转换(Representational State Transfer),它利用现有的HTTP协议进行通信,使用资源的...
Roy Thomas Fielding博士是HTTP协议的主要作者之一,他在博士论文中首次完整地定义了REST架构风格。他的研究工作对现代互联网的架构有重大影响,为Web服务和API设计提供了理论基础。 3. RESTful API设计原则: - ...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...