理解REST软件架构
一 种思维方式影响了软件行业的发展。REST软件架构是当今世界上最成功的互联网的超媒体分布式系统。它让人们真正理解我们的网络协议HTTP本来面貌。它 正在成为网络服务的主流技术,同时也正在改变互联网的网络软件开发的全新思维方式。AJAX技术和Rails框架把REST软件架构思想真正地在实际中很 好表现出来。今天微软也已经应用REST并且提出把我们现有的网络变成为一个语义网,这种网络将会使得搜索更加智能化。
REST与HTTP协议
REST软件架构是由Roy Thomas Fielding博士在2000年首次提出的。他为我们描绘了开发基于互联网的网络软件的蓝图。REST软件架构是一个抽象的概念,是一种为了实现这一互联网的超媒体分布式系统的行动指南。利用任何的技术都可以实现这种理念。而实现这一软件架构最著名的就是HTTP协议。通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTP的REST软件架构,或者更进一步把REST和HTTP看作为等同的概念。
今天,HTTP是互联网上应用最广泛的计算机协议。HTTP不是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件的 协议。它不仅仅能够对于互联网资源进行唯一定位,而且还能告诉我们对于该资源进行怎样运作。这也是REST软件架构当中最重要的两个理念。而REST软件 架构理念是真正理解HTTP协议而形成的。有了REST软件架构理念出现,才使得软件业避免了对HTTP协议的片面理解。只有正确的理论指导,才能避免在 软件开发的实际工作过程中少走弯路。
REST与URI(资源定位)
REST软件架构之所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不管你的文件是图片、文件Word还是视频文件,也不管你 的文件是txt文件格式、xml文件格式还是其它文本文件格式。它利用支持HTTP的TCP/IP协议来确定互联网上的资源。
REST与CRUD原则
REST软件架构遵循了CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建(Create)、获取(Read)、更新 (Update)和销毁(DELETE)就可以完成对其操作和处理了。其实世界万物都是遵循这一规律:生、变、见、灭。所以计算机世界也不例外。这个原则 是源自于我们对于数据库表的数据操作:insert(生)、select(见)、update(变)和delete(灭),所以有时候CRUD也写作为 RUDI,其中的I就是insert。这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最 基本的运算一样。
REST与网络服务
尽管在Java语言世界中网络服务目前是以SOAP技术为主,但是REST将是是网络服务的另一选择,并且是真正意义上的网络服务。基于REST思 想的网络服务不久的将来也会成为是网络服务的主流技术。REST不仅仅把HTTP作为自己的数据运输协议,而且也作为直接进行数据处理的工具。而当前的网 络服务技术都需要使用其它手段来完成数据处理工作,它们完全独立于HTTP协议来进行的,这样增加了大量的复杂软件架构设计工作。REST的思想充分利用 了现有的HTTP技术的网络能力。在德国电视台上曾经出现过一个这样的五十万欧元智力题:如何实现网络服务才能充分利用现有的HTTP协议?该问题给出了 四个答案:去问微软;WSDL2.0/SOAP1.2;WS-Transfer;根本没有。这个问题告诉我们HTTP并不是一个简单的数据传来传去的协 议,而是一个聪明的会表现自己的协议,这也许是REST = Representational State Transfer的真正含义。
实际上目前很多大公司已经采用了REST技术作为网络服务,如Google、Amazon等。在Java语言中重要的两个以SOAP技术开始的网络服务框架XFire和Axis也把REST作为自己的另一种选择。它们的新的项目分别是Apache CXF 和Axis2 。Java语言也制定关于REST网络服务规范:JAX-RS: Java API for RESTful Web Services (JSR 311)。相信还会出现更多与REST相关的激动人心的信息。
REST与AJAX技术
尽管AJAX技术的出现才不到两年时间,但是AJAX技术遵循了REST的一些重要原则。AJAX技术充分利用了HTTP来获取网络资源并且实现了 HTTP没有的对于异步数据进行传输的功能。AJAX技术还使得软件更好地实现分布性功能,在一个企业内只要一个人下载了AJAX引擎,其它企业内部的人 员,就可以共享该资源了。AJAX技术遵守REST准则的应用程序中简单和可伸缩的架构,凡是采用AJAX技术的页面简洁而又丰富,一个页面表现了丰富多 彩的形态。
AJAX技术还使用了一种不同于XML格式的JSON文件格式,这个意义在哪里呢?在REST软件架构下我们不能对于XML文件进行序列化处理,这 样程序员必须要使用自己的XML绑定框架。而以序列化的JavaScript对象为基础的JSON已经获得了广泛认可,它被认为能以远比XML更好的方式 来序列化和传输简单数据结构,而且它更简洁。这对REST是一个极大贡献和补充。
当前的网络应用软件还违背了REST的“无状态服务器”约束。REST服务器只知道自己的状态。REST不关心客户端的状态,客户端的状态自己来管 理,这是AJAX技术的应用之地。通过AJAX技术,可以发挥有状态网络客户机的优势。而REST的服务器关心的是从所有网络客户端发送到服务器操作的顺 序。这样使得互联网这样一个巨大的网络得到有序的管理。
REST与Rails框架
Ruby on Rails框架(简称Rails或者Rails框架)是一个基于Ruby语言的越来越流行的网络应用软件开发框架。它提供了关于REST最好的支持,也是 当今应用REST最成功的一个软件开发框架。Rails框架(从版本1.2.x起)成为了第一个引入REST作为核心思想的主流网络软件开发框架。在 Rails框架的充分利用了REST软件架构之后,人们更加坚信REST的重要性和必要性。Rails利用REST软件架构思想对网络服务也提供了一流的 支持。从最直观的角度看待REST,它是网络服务最理想的手段,但是Rails框架把REST带到了网络应用软件开发框架。这是一次飞跃,让REST的思 想从网络服务的应用提升到了网络应用软件开发。利用REST思想的simply_restful插件已经成为了Rails框架的核心内容。
REST安全性
我们把现有基于SOAP的网络服务和基于REST/HTTP网络服务作个比喻,前者是一种传统的寄信方式,而后者是现代网络的电子邮件方式。要是是 寄信和电子邮件都有病毒存在的话,传统的寄信被送到对方就很危险,而电子邮件是开发的,电子邮件供应商比如Google为我们检查了电子邮件是否有病毒。 这里并不是说明SOAP网络服务消息包含义病毒,而是说明HTTP是无法处理SOAP信息包究竟好不好,需要额外的软件工具解决这一问题,包括防火墙也用 不上和管不了。
REST/HTTP网络服务的信息包可以被防火墙理解和控制。你可以按照操作和链接进行过滤信息包,如你可以规定从外部来的只能读取(GET操作) 自己服务器的资源。这样对于系统管理员而言使得软件管理更为简单。REST的安全性还可以利用传输安全协议SSL/TLS、基本和摘要式认证(Basic und Digest Authentication)。除了这些REST自身的安全性功能外,还可以利用像基于信息的Web Services Security(JSR 155)作为REST不错的补充。
参考文献
中文参考文献
Roy Thomas Fielding博士论文中文版本
Roy Thomas Fielding博士论文英文版本
相关推荐
infoq 架构师8月刊 infoq 架构师8月刊 infoq 架构师8月刊
《infoQ架构师月刊上部》集合了2008年至2012年间infoQ平台上关于架构领域的精华文章和讨论,旨在为IT行业的专业人士,尤其是架构师们提供宝贵的参考资料。InfoQ是一个全球知名的软件开发资讯平台,以其深度、专业和...
infoq 架构师 2019年月刊收集 infoq 架构师 2019年月刊收集
在《深入浅出REST》这篇文章中,作者Stefan Tilkov通过清晰且易于理解的方式介绍了REST(表述性状态转移)这一概念及其在现代软件架构中的应用。随着互联网技术的发展,REST作为一种轻量级的网络应用程序设计风格...
《InfoQ架构师杂志2015合集》是一份极具价值的资源,汇集了2015年全年InfoQ发布的关于软件架构设计的深度文章和访谈。对于那些致力于提升自身在架构设计领域专业能力的程序员,这是一份不可多得的学习资料。本合集...
- **目标受众**:InfoQ中文站明确将其新闻价值观的核心受众定位为架构师、项目经理、团队领导者以及高级开发人员。这一定位反映了对于这些群体的专业需求的高度关注。 - **角色定位**:作为一个技术社群的镜像,...
InfoQ作为一个知名的IT资讯平台,一直致力于分享高质量的技术信息和实践经验,帮助开发者和架构师们保持对行业动态的敏锐洞察。 在《Architect-200907-by-InfoQ.pdf》这期电子杂志中,我们可以预见到涵盖了以下几个...
综上所述,InfoQ架构师月刊覆盖了编程语言的更新、大数据技术、AI应用、软件测试等多个前沿技术领域,提供了深度的技术解析和实战指导,是架构师和技术管理者保持技术敏锐度和知识更新的重要资源。
infoQ作为一个全球知名的IT技术交流平台,其内容覆盖了软件开发的各个方面,尤其在架构设计、技术趋势、最佳实践等方面具有权威性。本合集的下部主要关注的是这一时期内架构领域的发展和变化,以下将详细探讨其中...
InfoQ作为一个全球知名的IT资讯网站,其内容涵盖了软件开发、设计、架构等多个领域,对提升架构师的专业素养具有重要价值。 本合集中的内容可能包括但不限于以下几个方面: 1. 微服务架构:2016年是微服务架构迅速...
《InfoQ_ArchSummit全球架构师峰会_Day1_rebuilt》是InfoQ组织的一场专注于架构设计和技术领导力的盛会。这场会议汇集了全球顶尖的架构师、技术领导者和行业专家,共同探讨和分享了关于软件架构设计的最新趋势、最佳...
《InfoQ架构师杂志2014合集》是一份极具价值的资源,它集结了2014年全年InfoQ发布的关于软件架构设计的深度文章和访谈,为专业人士提供了丰富的学习材料。InfoQ作为业界知名的在线媒体平台,一直致力于分享最新的...
里,我从竭尽所能将国外最新兰二企业软件开发领域癿资讨仃终给国内癿架极师从。同旪, 我从迋积枀联络技术社匙呾与家,挖掘报道有价值癿亊件,幵挑选有今表性癿仌英文发布在 infoq.com 网站,给国外技术社匙增加一丧...
J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊
通过阅读这些《infoQ架构师杂志》,系统架构设计师可以深化对架构设计的理解,提高解决问题的能力,并紧跟行业发展趋势,为自己的职业生涯提供有力的支持。这些资源对于准备系统架构设计师考试的人员来说,无疑是...
### INFOQ 架构师期刊知识点总结 #### 一、云安全架构的重要性 - **文章概览**:“从云消费者的角度谈云安全架构”一文深入探讨了云计算环境下安全架构的关键性。随着云计算技术的普及,越来越多的企业和个人开始...