`
mypages
  • 浏览: 90319 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Fielding博士的REST论文中文版(Rest开山作品)

阅读更多

这编论文可谓时Rest的开山之做,所以不得不拜读,所以也做个转贴
============================

摘要:

Roy Thomas Fielding博士关于REST的论文绝负盛名,被称为Web架构设计领域的”圣经”。日前,由ajaxcn.org社区、91yee 翻译社区、Matrix社区联合参与完成了对该论文的中文化工作,并且在完成翻译校对工作后获得了Fielding博士的官方许可,正式发布在满江红开源 网站的OpenDoc系列文档中,大家可以从其网站下载。

<!---->

Roy Thomas Fielding 博士的论文:《Architectural Styles andthe Design of Network-based Software Architectures》 绝负盛名,被称为Web架构设计领域的”圣经”。 日前,由ajaxcn.org社区、91yee 翻译社区、Matrix社区联合参与完成了对该论文的中文化工作,并且在完成翻译校对工作后获得了Fielding博士的官方许可,正式发布在满江红开源网站的OpenDoc系列文档中,大家可以从这里下载:http://www.redsaga.com/opendoc/REST_cn.pdf

在此感谢为这篇论文中文版作出过贡献的所有人员,伟大思想的共享范围是无限的!

作者简介


Roy Thomas Fielding 博 士是HTTP、URI等Web架构标准的主要设计者。他在2000年所著的博士论文中,首次系统全面地阐述了REST的架构风格和设计思想。这篇论文是 Web发展史上一篇非常重要的技术文献,所有做Web开发的开发者都应该熟读这篇论文,深刻理解Web架构和HTTP、URI等标准背后的基本原理。

译者简介

李锟(ajaxcn.org 网站 站长)、廖志刚(91yee 翻译社区 负责人)、cleverpig( Matrix 技术社区 负责人)、杨光(《重构与模式》的译者)

版权声明

本论文是有版权的著作,英文原文的版权属于Roy Thomas Fielding博士所有,中文译文的版权属于全体译者共同所有。译者在得到了Fielding博士的许可之后翻译了这篇论文。本译文的发布权属于 Fielding博士和全体译者共同所有。未经许可,其他网站不得全部或部分转载本译文的内容。

致谢

本论文是Web发展史上一篇非常重要的技术文献。出于社会责任感,译者认为极其有必要将它介绍给国人,使国人得以一窥HTTP和URI等Web架构 标准背后的基本原理。基于相同的基本原理,Web开发者能够设计并建造出最为高效的Web应用。因此译者发起了这一公益性的翻译项目,该项目得到了国内一 些专家的支持,他们认真地审阅了译文,提出了很多中肯的评论,使得译文的质量得以保证。在此特向他们表示诚挚的感谢,他们是:庄表伟、李琳骁、金尹、孟 岩、骆古道、范凯、刘新生、刘江。

论文摘要

架构风格与基于网络的软件架构设计
作者:Roy Thomas Fielding
信息与计算机科学博士
加州大学欧文分校,2000年
博士论文答辩委员会主席:Richard N. Taylor教授

万维网(World Wide Web)的成功,很大程度上是因为其软件架构的设计满足了Internet规模(Internet-scale)的分布式超媒体系统的需求。在过去的10 年间,通过对定义Web架构的标准所做的一系列修改,Web以迭代的方式不断地发展着。为了识别出Web需要改善的那些方面,并且避免对其进行不想要的修 改,必需要有一种现代Web架构的模型,用来指导Web的设计、定义和部署。

软件架构的研究探索了如何以最佳的方式划分一个系统、如何标识组件、组件之间如何通信、信息如何沟通、系统的元素如何能够独立地进化,以及上述的所 有东西如何能够使用形式化的和非形式化的符号加以描述。我的工作的动机是希望理解和评估基于网络的应用的架构设计,通过有原则地使用架构约束,从而从架构 中获得所希望的功能、性能和社会学几方面的属性。一种架构风格是一组已命名的、协作的架构约束。

这篇论文定义了一个框架,致力于通过架构风格来理解软件架构,并且展示如何使用风格来指导基于网络的应用的架构设计。本文使用了一个对基于网络的应 用的架构风格的调查,根据不同的风格在分布式超媒体的架构中所导致的架构属性,来对这些风格进行分类。然后我介绍了表述性状态转移 (Representational State Transfer,REST)的架构风格,并且描述了如何使用REST来指导现代Web架构的设计和开发。

REST强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件 (intermediary components)。我描述了指导REST的软件工程原则和选择用来支持这些原则的交互约束,并将它们与其他架构风格的约束进行了对比。最后,我描述 了从在超文本转移协议(HTTP)和统一资源标识符(URI)的标准中应用REST,以及从这两个标准在Web客户端和服务器软件的后续部署等过程中学到 的经验教训。

绪论

抱歉……你说的可是”屠刀”? –摘自《建筑师讽刺剧》(The Architects Sketch)[111]

正如Perry和Wolf的预言,软件架构成为了20世纪90年代软件工程研究的焦点。由于现代软件系统的复杂性,更加有必要强调组件化的系统,其 实现被划分为独立的组件,这些组件通过相互通信来执行想要完成的任务。软件架构的研究探索了如何以最佳方式划分一个系统、如何标识组件、组件之间如何通 信、信息如何沟通、组成系统的元素如何能够独立地进化,以及上述的所有东西如何能够使用形式化的和非形式化的符号加以描述。

一个优秀的架构并非凭空想象。所有架构级的设计决策应该根据被设计系统的功能、行为和社会学等方面的需求来作出,这是一个原则,既适用于软件架构, 同样也适用于传统的建筑架构领域。”形式追随功能”的指导方针来自从数百年失败的建筑项目中获得的经验,但是却常常被软件从业者忽视。上面引用的那句滑稽 搞笑的话来自于Monty Python系列讽刺剧,这是当一个建筑师在面对设计一个城市公寓区的目标时,头脑里所抱有的荒诞想法。他想使用所有的现代屠宰场的组成部分来完成这个设 计。这也许是他所构思过的最棒的屠宰场,但是对于预期的房客来说却谈不上舒适,他们不得不战战兢兢地行穿行在安装着旋转刀头的走廊中。

《建筑师讽刺剧》里的夸张说法也许看似荒唐可笑,但是考虑到我们是如此频繁地看到软件项目一开始就采用最新时髦的架构设计,到后来却发现系统的需求 实际上并不需要这样一种架构。design-by-buzzword(按照时髦的词汇来做设计)是一种常见的现象。至少在软件行业中,很多此类行为是由于 对一组特定的架构约束为什么是有用的缺乏理解。换句话说,当选择那些优秀的软件架构来重用时,这些架构背后的推理过程(reasoning),对于设计者 来说并非是显而易见的。

这篇论文探索了在计算机科学的两个研究学科(软件和网络)边界上的连接点。软件研究长期以来关注软件设计的分类和对于设计方法学的开发,但是极少能 够客观地评估不同的设计选择对于系统行为的影响。网络研究则恰恰相反,集中于系统之间普通的通信行为的细节和提高特殊通信技术的性能,却常常忽略了一个事 实,即改变一个应用的交互风格对于性能产生的影响要比改变交互所使用的通信协议更大。我的工作的动机是希望理解和评估基于网络的应用的架构设计,通过有原 则地使用架构约束,从而从架构中获得所希望的功能、性
能和社会学几方面的属性。当给定一个名称时,一组协作的架构约束就成为了一种架构风格。这篇论文的前三章定义了一个通过架构风格来理解软件架构的框架,揭 示了架构风格如何能够被用来指导基于网络的应用的架构设计。当将常见的架构风格应用于基于网络的超媒体的架构时,将会导致一系列架构属性,根据这些架构属 性来对架构风格进行调查和分类。然后使用得到的分类来识别出一组能够改善早期万维网的架构的架构约束。

如同我们在第4章中所讨论的,设计Web的架构就必须要理解Web的需求。Web是旨在成为一个Internet规模的分布式超媒体系统,这意味着 它的内涵远远不只仅仅是地理上的分布。Internet是跨越组织边界互相连接的信息网络。信息服务的提供商必须有能力应对无法控制(anarchic) 的可伸缩性的需求和软件组件的独立部署。通过将动作控制(actioncontrols)内嵌在从远程站点获取到的信息的表述之中,分布式超媒体为访问服 务提供了一种统一的方法。因此Web的架构必须在如下环境中进行设计,即跨越高延迟的网络和多个
可信任的边界,以大粒度的(large-grain)数据对象进行通信。

第5章介绍并详细描述了为分布式超媒体系统设计的表述性状态转移(REST)的架构风格。REST提供了一组架构约束,当作为一个整体来应用时,强 调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。我描述了指导REST的软件工程原则 和选择用来支持这些原则的交互约束,并将它们与其他架构风格的约束进行了对比。

如第6章中所展示的那样,在过去的6年间,REST架构风格被用来指导现代Web的架构的设计和开发。这个工作与我所创作的超文本转移协议 (HTTP)和统一资源标识符(URI)的Internet标准共同完成,这两个规范定义了被所有Web之上的组件交互所使用的通用的接口。

就像大多数真实世界中的系统一样,并非所有已部署的Web架构的组件都服从其架构设计中给出的每一个约束。REST既被用来作为定义架构改进的一种 方法,也被用来作为识别架构不匹配(mismatch)的一种方法。当由于无知或者疏忽,一个软件实现以违反架构约束的方式来部署时,就会发生不匹配。尽 管不匹配通常无法避免,但是有可能在它们定型之前识别出它们。在第6章中总结了几种在现代Web架构中的不匹配情况,并且对它们为何会出现和它们如何偏离 REST进行了分析。

概括来说,这篇论文对于Internet和计算机科学领域的软件研究作出了如下贡献:
● 一个通过架构风格来理解软件架构的框架,包括了一组相容的术语,用来描述软
件架构;
● 通过当某种架构风格被应用于一个分布式超媒体系统的架构时,它将导致的架构
属性,来对基于网络的应用的架构风格进行分类。
● REST,一种新颖的分布式超媒体系统的架构风格;以及
● 在设计和部署现代万维网的架构的过程中,应用和评估REST架构风格。

现代Web是REST风格架构的一个实例。尽管基于Web的应用能够包括对于其他风格的交互的支持,但它的协议和性能所关注的焦点是分布式超媒体。 REST仅仅详细描述了架构中那些被认为对于Internet规模的分布式超媒体交互来说最为本质的部分。在现有协议无法表达组件交互的所有可能语义的地 方,以及在语法细节能够被替换为更加有效的形式而不需要改变架构的能力的地方,都存在着Web架构需要加以改进的领域。同样地,协议扩展能够被拿来与 REST进行比较,检查它们是否符合这个架构;如果不符合,更加有效的做法是将那个功能重定向到一个使用更加适用的架构风格并行运行的系统。
在一个理想的世界里,软件系统的实现将精确地匹配它的设计。现代Web架构的一些功能确实完全符合它们在REST中的设计标准,例如将URI[21]作为 资源标识符来使用,以及使用Internet媒体类型[48]来标识表述的数据格式。然而,由于未做遗留系统试验(但是必需要保持向后兼容性)和不了解架 构风格的开发者所部署的扩展,在现代Web协议中也存在着一些不考虑架构设计的方面。REST提供了一个模型,不仅可以用来开发和评估新的功能,也可以用 来识别和理解破损的功能。
可以论证万维网是世界上最大型的分布式应用。理解在Web底层的关键架构原则能够帮助解释它在技术上的成功,并且为其他的分布式应用带来改进,特别是那些 服从于相同的或相似的交互方法的应用。REST既贡献了在现代Web软件架构背后的基本原理,也为我们上了重要的一课,展示了软件工程原则如何能够被系统 地应用在对于一个真实软件系统的设计和评估的过程中。
对于基于网络的应用来说,系统的性能受到了网络通信的支配。对于一个分布式超媒体系统来说,组件交互由大粒度的数据转移组成,而不是由计算密集型的任务组 成。REST风格被开发出来以满足这些需求,它聚焦于资源和表述的通用的连接器接口,支持中间组件进行处理和缓存以及组件的替换,这使得基于Web的应用 的规模从在1994年的每天10万个请求发展到了在1999年的每天6亿个请求。
通过对HTTP/1.0[19]和HTTP/1.1[42]标准6年的开发、精心设计的URI[21]和相关的URL[40]标准、以及在现代Web架构 中成功地部署很多独立开发的、商业级的应用系统,REST架构风格得到了验证。它既可以作为一个指导设计的模型,也可以作为一个对于Web协议的架构扩展 的严格的测试。将来的工作聚焦于对HTTP/1.x协议家族的替代者的开发,以及使用一个更加有效的符
号化(tokenized)的语法来扩展这个架构指导,但不会丢失由REST识别出的想要得到的属性。无线设备的需求(它有着很多与REST背后的原则相 同的特性)将会激发应用级协议设计和包括了主动的中间组件的架构这两方面的进一步发展。在扩展REST以便考虑可变的请求优先级、有区别的服务质量 (quality-of-service)、以及由持续的数据流组成的表述(例如那些由广播的音频和视频来源生成的数据)等方面,也存在着一些兴趣。

分享到:
评论

相关推荐

    基于智能温度监测系统设计.doc

    基于智能温度监测系统设计.doc

    搜广推推荐系统中传统推荐系统方法思维导图整理-完整版

    包括userCF,itemCF,MF,LR,POLY2,FM,FFM,GBDT+LR,阿里LS-PLM 基于深度学习推荐系统(王喆)

    2023-04-06-项目笔记 - 第三百五十五阶段 - 4.4.2.353全局变量的作用域-353 -2025.12.22

    2023-04-06-项目笔记-第三百五十五阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.353局变量的作用域_353- 2024-12-22

    和美乡村城乡融合发展数字化解决方案.docx

    和美乡村城乡融合发展数字化解决方案.docx

    CNN基于Python的深度学习图像识别系统

    基于Python的深度学习图像识别系统是一个利用卷积神经网络(CNN)对图像进行分类的先进项目。该项目使用Python的深度学习库,如TensorFlow,构建和训练一个模型,能够自动识别和分类图像中的对象。系统特别适合于图像处理领域的研究和实践,如计算机视觉、自动驾驶、医疗影像分析等。 项目的核心功能包括数据预处理、模型构建、训练、评估和预测。用户可以上传自己的图像或使用预定义的数据集进行训练。系统提供了一个直观的界面,允许用户监控训练进度,并可视化模型的性能。此外,系统还包括了一个模型优化模块,通过调整超参数和网络结构来提高识别准确率。 技术层面上,该项目使用了Python编程语言,并集成了多个流行的机器学习库,如NumPy、Pandas、Matplotlib等,用于数据处理和可视化。模型训练过程中,系统会保存训练好的权重,以便后续进行模型评估和预测。用户可以通过简单的API调用,将新的图像输入到训练好的模型中,获取预测结果。

    拳皇97.exe拳皇972.exe拳皇973.exe

    拳皇97.exe拳皇972.exe拳皇973.exe

    基于python和协同过滤算法的电影推荐系统

    基于python和协同过滤算法的电影推荐系统 基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法

    DEV-CPP-RED-PANDA

    DEV-CPP-RED-PANDA

    Python语言求解旅行商(TSP)问题,算法包括禁忌搜索、蚁群算法、模拟退火算法等

    Python语言求解旅行商问题,算法包括禁忌搜索、蚁群算法、模拟退火算法等。

    pdfjs2.5.207和4.9.155

    pdfjs 用于在浏览器中查看/预览/打印pdf。 pdfjs 2.5.207 支持firefox/chrome/edge/ie11以上版本。 如果需要支持旧版本浏览器,可以使用这个,是未修改过的原版,支持打印和下载按钮。亲测有效。 pdf 4.9.155分两个包: pdfjs-4.9.155-dist.zip pdfjs-4.9.155-legacy-dist.zip

    建设项目现场高温人员中暑事故应急预案.docx

    建设项目现场高温人员中暑事故应急预案

    数据结构上机实验大作业-线性表选题.zip

    数据结构上机实验大作业-线性表选题.zip

    基于高德地图的校园导航全部资料+详细文档+高分项目.zip

    【资源说明】 基于高德地图的校园导航全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    全自动批量建站快速养权重站系统【纯静态html站群版】:(GPT4.0自动根据关键词写文章+自动发布+自定义友链+自动文章内链+20%页面加提权词)

    【静态站群程序视频演示,只有视频,不含程序,下载须知】【静态站群程序视频演示,只有视频,不含程序,下载须知】全自动批量建站快速养权重站系统【纯静态html站群版】:(GPT4.0自动根据关键词写文章+自动发布+自定义友链+自动文章内链+20%页面加提权词)

    9.30 SWKJ 男头7张+女头2张.zip

    9.30 SWKJ 男头7张+女头2张.zip

    基于java+springboot+vue+mysql的技术交流和分享平台 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、vscode 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    一个通过单片机在各种屏幕上显示中文的解决方案.7z

    一个通过单片机在各种屏幕上显示中文的解决方案.7z

    Halcon模板匹配图像包

    图像

    线上辅导班系统-JAVA-基于springboot的线上辅导班系统的开发与设计(毕业论文)

    一、用户管理功能 用户注册与登录 学生注册:学生可以通过手机号、邮箱、社交账号等方式注册,填写个人信息(如姓名、年龄、学校等)。 家长/监护人账户:支持家长/监护人注册并管理学生账户,查看学习进度和成绩。 教师账户:教师可以注册并设置个人资料,上传资质认证文件。 管理员账户:管理员负责整个系统的管理,包括用户管理、课程管理、平台设置等。 用户权限管理 角色权限:系统根据用户类型(学生、家长、教师、管理员)分配不同权限,确保信息安全。 家长监督:家长可以查看子女的学习进度、成绩和教师反馈,参与学习监督。 个人资料管理 用户可以在个人中心更新基本信息,设置个人头像、联系方式、密码等。 支持学籍信息的维护,例如学生的年级、班级、课程历史等。 二、课程管理功能 课程设置 课程创建与编辑:教师或管理员可以创建和编辑课程内容,上传课件、视频、文档等教学材料。 课程分类:根据学科、年级、难度等维度进行课程分类,方便学生浏览和选择。 课程排课:管理员可以设置课程的时间表、教学内容和授课教师,并调整上课时间和频率。 课程安排与通知 课程预约:学生可以在线选择并预约感兴趣的课程,系统根据学生的时

    英特尔2021-2024年网络连接性和IPU路线图

    内容概要:本文档介绍了英特尔2021年至2024年的网络连接性产品和智能处理单元(IPU)的战略和技术路线图。涵盖了从10GbE到200GbE的不同系列以太网适配器的特性、性能和发布时间。详细列出了各个产品的关键功能,如PCIe接口、安全特性、RDMA支持等。同时,介绍了IPU的发展计划,包括200G、400G和800G的不同代次产品的性能提升和新的功能特点。 适合人群:从事网络工程、数据中心管理、IT架构设计的专业技术人员。 使用场景及目标:本文档主要用于了解英特尔未来几年在以太网适配器和IPU领域的技术和产品规划,帮助企业在采购和部署网络设备时做出决策。同时,为研究人员提供最新技术发展趋势的参考。 其他说明:文档内容涉及的技术细节和时间表可能会有变动,请以英特尔官方发布的最新信息为准。

Global site tag (gtag.js) - Google Analytics