下载  >  开发技术  >  其它  > Architectural Styles and the Design of Network-based Software Architectures-cn

Architectural Styles and the Design of Network-based Software Architectures-cn 评分

本论文是Web发展史上一篇非常重要的技术文献。出于社会责任感,译者认为极其有 必要将它介绍给国人,使国人得以一窥HTTP和URI等Web架构标准背后的基本原理。基 于相同的基本原理,Web开发者能够设计并建造出最为高效的Web应用。因此译者发起了 这一公益性的翻译项目。除了四位主要的译者以外,来自新浪公司的田乐、丁舜佳和梁晓星 也参与了第3章的部分翻译工作,对他们的辛勤工作表示感谢。此外,国内一些专家认真地 审阅了论文的译文,提出了很多中肯的评论,使得译文的质量得以保证。在此向他们表示诚 挚的感谢,他们是:庄表伟、李琳骁、金尹、孟岩、骆古道、范凯、刘新生、刘江。
内容目录 论文摘要 垂垂垂希·看看垂 绪论 第1章软件架构 垂鲁DD垂。·垂.垂。垂 10 1.1运行时抽象 D音··.音···看垂垂 1.2元素 12.1组件 1.2.2连接器. 12 12.3数据 ………………,……12 1.3配冒 14属性 1.5风格…… 13 1.6模式和模式语言. ········· 1.7视图 ·· 15 18相关工作… 1.8.1设计方法学.15 1.8.2设计、设计模式、模式语言手册 ·.· 15 1.8.3参考模型和特定于领域的软件架构. 1.8.4架构描述语言.… 1.8.5形式化的架构模型 17 19小结 ··.·········.······················································ 第2章基于网络的应用的架构 21范围 18 2.1.1基于网络ⅴs.分布式 2.1.2应用软件ws.网络软件 18 22评估应用软件架构的设计 23关键关注点的架构属性. 2.31性能( Performance) 19 2.3.1.1网络性能( Network performance) .20 23.1.2用户可觉察的性能(User- perceived Performance)… 20 231,3网络效率( Network Efficiency) 23.2可伸缩性( Scalability) …21 23.3简单性( Simplicity) 21 23.4可修改性( Modifiability) 21 2341可进化性( Evolvability) 23.42可扩展性( Extensibility)… 22 2.3.43可定制性( Customizability)… 2344可配置性( Configurability) 2345可重用性( Reusability) 3.5可见性( usability) 2 23.6可移植性( Portability.....3 23.7可靠性( Reliability) 24小结 23 第3章基于网络的架构风格... 24 3.1分类方法学 ………24 3.1.1选择哪些架构风格来进行分类. 24 3.1.2风格所导致的架构属性. 24 31.3可视化 24 3.2数据流风格(Data- flow Styles).25 32管道和过滤器( Pipe and Filter,PF).25 32.2统一管道和过滤器( Uniform Pipc and Filter,UPF). .26 33复制风格( Replication styles)…... 26 3.3.1复制仓库( Replicated repository,RR) 3.3.2缓存( Cache,) 26 34分层风格( Hierarchical Styles) 27 34.1客户-服务器( Client- Server,CS) 27 342分层系统( Layered System,LS)和分层客户-服务器( Layered- Client Server, LCS ·· 28 34.3客户-无状态-服务器( Client- Stateless- Server,CSS) 344客户缓存-无状态-服务器( Client-Cache-Stateless-Server,CSSS) 28 345分层-客户-缓存-无状态服务器( Layered-Client-Cache- Stateless-Server,LC$Ss 34.6远程会话( Remote session,RS)… 3.4.7远程数据访问( Remote data access,RDA) 3.5移动代码风格( Mobile code styles 29 3.5.1虚拟机( Virtual machine,VM) 30 3.52远程求值( Remote evaluation,REV)…… .30 3.53按需代码( Code on demand,COD) 31 3.54分层-按需代码客户-缓存-无状态-服务器( Layered-Code-on- Demand -Client-Cache Stateless-Server, LCODCSSS) 3.5.5移动代理( Mobile agent,MA)....31 3.6点对点风格(Pccr-to- Pccr Styles) 3.61基于事件的集成( Event-based Integration,EBI)132 3.6.2C2 32 363分布式对象( Distributed Objects,DO) 33 36.4被代理的分布式对象( Brokered Distributcd Objects,BDO) 3.7局限. ………………….3 3.8相关工作 34 3.8.1架构风格和模式的分类方法 34 3.8.2分布式系统和编程范例 .35 383中间件 35 3.9小结…….........35 第4章设计web架构:问题与洞察力.. 137 41万维网应用领域的需求, 37 4.1.1低门槛 4.1.2可扩展性 37 41.3分布式超媒休 看音.·垂·。看4·4看垂垂DD非看.·垂。垂。看看垂4音垂DD垂·看·非垂。垂看看看垂垂DD·垂垂。垂看 垂南垂 ,38 4.1.4 Internet规模 38 4.1.4,1无法控制的可伸缩性. 41.4,2独立部署 .38 4.2问题 4.3推导方法( Approach) 39 4.4小结 第5章表述性状态转移(REST)…… 41 5.1推导REST 5.1.1从“空”风格开始…… ....··....·....·.···...············· ……41 5.1.2客户-服务器 .41 5.1.3无状态 DD。·4 ………42 5.1.4缓行 42 51.5统一接口 ······························· …14 5.1.6分层系统 4 5.1.7按需代码 45 51.8风格推导小结 46 5.2REST架构的元素 46 52.1数据元素( Data elements)….. 5.2.1.1资源和资源标识符( Resources and resource identifiers)….47 52.1.2表述( Representations) 48 5.2.2连接器( Connectors) 49 523组件( Components) 5.3REST架构的视图 ·看,,,D·垂.·看 5.3.1过程视图( ProcessⅤiew) 53.2连接器视图( ConnectorⅤiew) 53.3数据视图( Data view) 53 54相关工作… 55小结 第6章经验与评估 …156 61Wcb标准化 62将REST应用于URM…157 6.2.1重新定义资源 57 6,22操作影子( Manipulating Shadows)… 57 623远程创作( Remote Authoring)… ····..···.·········.:···· 58 624将语义绑定到URI .58 625REST在URI中的不匹配......…….….….……………59 63将REST应用于HTTP 63.1可扩展性 着着DD垂。垂;垂。 59 6.3.1.1协议版本控制… ………60 6.31.2可扩展的协议元素 63.13升级 61 63.2自描述的消息 .61 6.3.2.1主机 D·垂。,·非音垂看垂垂D垂音.音。垂 6.322分层的编码… 牵DD垂垂 632.3语义独立性 63.2.4传输独立性.… ……62 632.5尺寸限制. 63.2.6缓存控制 63 63.27内容协商 63 6.33性能 ….64 63.3.1持久连接 年牵垂垂垂垂 牵DD垂垂 64 63.32直写式( write- through)缓存 64 6.3.4REST在HTTP中的不匹配. D音垂 654 6.341区分非权威的响应… 6.3.4.2C00kie. 65 6343必需扩展( Mandatory Extensions) ············::: 66 6.344混合元数据( Mixing Metadata)… 6 6.34.5MIME语法 635将响应匹配到请求 66 64技术迁移 .·····.·····..···:····.···············..····:···.············...····.·······.:······ 641 libwww-perl的部署经验 64.2 Apache的部署经验 .67 64.3开发顺从于URI和HTTP.1的软件….68 65架构上的教训.… 6.5.1基于网络的AP的优势 652HTTP并不是RPC .69 6.53HITP并不是种传输协议, …70 654媒体类型的设计 6541一个基于网络的系统中的应用状态 70 6.54.2增量处理 垂番DDD音。面看番垂番垂D音音音垂音番DD垂。音垂 6.5.4.3 Java VS JavaScript 6.6小结 .72 结论 …73 参考文献 垂着D …75 论文摘要7 论文摘要 架构风格与基于网络的软件架构设计 作者: Roy Thomas Fielding 信息与计算机科学博上 加州大学欧文分校,2000年 博士论文答辩委员会主席: Richard N. Taylor教授 万维网( World wide Web)的成功,很大程度上是因为其软件架构的设计满足了 Internet规模( Internet- scale)的分布式超媒体系统的需求。在过去的10年间,通过对定义 wcb架构的标准所做的一系列修改,Wecb以迭代的方式不断地发展着。为了识别出Web需 要改善的那些方面,并且避免对其进行不想要的修改,必需要有一种现代web架构的模型, 用来指导Web的设计、定义和部署。 软件架构的研究探索了如何以最佳的方式划分一个系统、如何标识组件、组件之间如何 通信、信息如何沟通、系统的元素如何能够独立地进化,以及上述的所有东西如何能够使用 形式化的和非形式化的符号加以描述。我的工作的动机是希望理解和评仙基于网络的应用的 架构设计,通过有原则地使用架构约束,从而从架构中获得所希望的功能、性能和社会学几 方面的属性。一种架构风格是一组已命名的、协作的架构约束 这篇论文定义了一个框架,致力于通过架构风格来理解软件架构,并且展示如何使用风 格来指导基于网终的应用的架构设计。本文使用了一个对基于网络的应用的架构风格的调耷, 根据不冋的风格在分布式超媒体的架构中所导致的架构属性,来对这些风格进行分类。然后 我介绍了表述性状态转移( Representational State Transfer,REST)的架构风格,并且描述了 如何使用REST来指导现代Web架构的设计和开发。 REST强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互 延迟、增强安全性、封装遗留系统的中间组件( intermediary components)。我描述了指导 REST的软件工程原则和选择用来支持这些原则的交互约束,并将它们与其他架构风格的约 東进行了对比。最后,我描述了从在超文木转移协议(HTT)和统一资源标识符(URⅠ 的标准中应用REST,以及从这两个标准在Web客户端和服务器软件的后续部署等过程中学 到的经验教训。 绪论8 绪论 抱歉……你说的可是“屠刀”? 摘自《建筑师讽刺剧》( The Architects sketch)[1 正如Pery和wolf的预言,软件架构成为了20世纪90年代软件工程研究的焦点。由于 现代软件系统的复杂性,更加有必要强调组件化的系统,其实现被划分为独立的组件,这些 组件通过相互通信来执行想要完成的任务。软件架构的研究探索了如何以最佳方式划分一个 系统、如何标识组件、组件之间如何通信、信息如何沟通、组成系统的元素如何能够独立地 进化,以及上述的所有东西如何能够使用形式化的和非形式化的符号加以描述 个优秀的架构并非凭空想象。所有架构缴的设计决策应该根据被设计系统的功能、冇 为和社会学等方面的需求来作出,这是一个原则,既适用于软件架构,同样也适用于传统的 建筑架构领域。“形式追随功能”的指导方针来自从数百年失败的建筑项目中获得的经验, 但是却常常被软件从业者忽视。上面引用的那句滑稽搞笑的话来自于 Monty Python系列讽刺 剧,这是当一个建筑师在面对设计一个城市公寓区的目标时,头脑里所抱有的荒诞想法。他 想使用所有的现代屠宰场的组成部分来完成这个设计。这也许是他所构思过的最棒的屠宰场 但是对于预期的房客来说却谈不上舒适,他们不得不战战兢兢地行穿行在安装着旋转刀头的 走廊中。 《建筑师讽刺剧》里的夸张说法也许看似荒唐可笑,但是考虑到我们是如此频繁地看到 软件项目一开始就釆用最新时髦的架构设计,到后来却发现系统的需求实际上并不需要这样 种架构。 design-by- buzzword(按照时髦的词汇来做设计)是一种常见的现象。至少在软 件行业中,很多此类行为是由于对一组特定的架构约束为什么是有用的缺乏理解。换句话说 当选择那些优秀的软件架构来重用时,这些架构背后的推理过程( reasoning),对丁设计者 来说并非是显而易见的。 这篇论文探索了在计算杋科学的两个硏究学科(软件和网络)边界上的连接点。软件硏 究长期以来关注软件设计的分类和对于设计方法学的开发,但是极少能够客观地评估不同的 设计选择对于系统行为的影响。网络研究则恰恰相反,集中于系统之间普通的通信行为的细 节和提高特殊通信技术的性能,却常常忽略了一·个事实,即改变一个应用的交互风格对于性 能产生的影响要比改变交互所使用的通信协议更大。我的工作的动机是希望理解和评估基于 网络的应用的架构设计,通过有原则地使用架构约束,从而从架构屮获得所希望的功能、性 能和社会学几方面的属性。当给定一个名称时,一组协作的架构约束就成为了一种架构风格 这篇论文的前三章定义了一个通过架构风格来理解软件架构的框架,揭示了架构风格如 何能够被用来指导基亍网络的应用的架构设计。当将常见的架构风格应用丁基亍网络的超媒 体的架构时,将会导致一系列架构属性,根据这些架构属性来对架构风格进行调査和分类。 然后使用得到的分类来识别出一组能够改善早期万维网的架构的架构约束。 如同我们在第4章中所讨论的,设计Web的架构就必须要理解Web的需求。Web是旨 在成为一个 Internet规模的分布式超媒体系统,这意味着它的内涵远远不只仅仅是地理上的 分布。 Internet是跨越组织边界互相连接的信息网络。信息服务的提供商必须有能力应对无 法控制( anarchic)的可伸缩性的需求和软件组件的独立部署。通过将动作控制( action controls)内嵌在从远程站点获取到的信息的表述之屮,分布式超媒体为访问服务提供了 种统一的方法。因此Web的架构必须在如下环境中进行设计,即跨越高延迟的网络和多个 可信任的边界,以大粒度的( large- grain)数据对象进行通信 第5章介绍并详细措述了为分布式超媒体系统设计的表述性状态转移(REST)的架构 风格。REST提供了一组架构约束,当作为一个整体来应用时,強调组件交互的可伸缩性、 绪论9 接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中 间组件。我描述了指导REST的软件工程原则和选择用来支持这些原则的交互约束,并将它 们与其他架构风格的约束进行了对比。 如第6章中所展示的那样,在过去的6年间,REST架构风格被用米指导现代Web的架 构的设计和开发。这个工作与我所创作的超文本转移协议(HTTP)和统一资源标识符 (URI)的 Internet标准共同完成,这两个规范定义了被所有Web之上的组件交互所使用的 通用的接口。 就像人多数真实世界中的系统一样,并非所有已部署的Wcb架构的组件都服从其架构 设计中给出的每一个约束。REST既被用米作为定义架构改进的一种方法,也被用米作为识 别架构不匹型( mismatch)的一种方法。当由于无知或者疏忽,一个软件实现以违反架构约 朿的方式来部署时,就会发生不匹配。尽管不匹配通常无法避免,但是有可能在它们定型之 前识别出它们。在第6章中总结了几种在现代Web架构中的不匹配情况,并且对它们为何会 出现和它们如何偏离REST进行了分析 概括来说,这篇论文对亍 Internet和计算柷科学领域的软件研究作岀了如下贡献: 一个通过娛构风格来理解软件架构的框架,包拓了一纽相容的术诂,用来描述软 件架构; 通过当某种架构风格被应用于一个分布式超媒体系统的架构时,它将导致的架构 属性,来对基于网络的应用的架构风格进行分类 REST,一种新颖的分布式超媒体系统的架构风格;以及 在设计和部署现代万维网的架构的过程中,应用和评估REST架构风格 第1章软件架构10 第1章软件架构 尽管软件架构作为一个研究领域吸引了很多人的兴趣,但是对于什么应该被纳入架构的 定义,研究者们儿乎从未达成过共识。在很多情况下,这导致了在过去的研究中忽视了架构 设计的一些重要的方面。本章在检查文献中现存的定义和我自己在基于网络的应用的架构方 面的洞察力的基础上,定义了一套自相容(self- consistent)的软件架构术语。每个定义使用 方框突出显示,随后讨论该定义如何得来,或者与相关研究进行比较。 1.1运行时抽象 个软件架构是一个软件系统在其操作的某个阶段的运行时(run-timc)元素的抽 象。一个系统可能由很多层抽象和很多个操作阶段组成,每个抽象和操作阶段都 有自己的软件架构 软件架构的核心是抽象原则:通过封装来隐藏系统的一些细节,从而更好地识别和支持 系统的属性[117。一个复杂的系统包含有多层的抽象,每一层抽象都有自己的架构。架构代 表了在某个层次上系统行为的抽象,架构的元素被描述为提供给同层的其他元素的抽象接口 [9]。在每个元素之中,也可能还存在着另一个架构,定义了了元素的系统,这个系统实 现了由父元素的抽象接口所展示的行为。这样的架构可以递归下去直到最基本的系统元素: 它们不能再被分解为抽象层次更低的元素。 狳了架构的层次,软件系统通常拥有多个操作阶段,例如启动、初始化、常处理、重 新初始化和停止。每个操作阶段都有自己的架构。例如,配置文件在启动阶段会被当作架构 的一个数据元素来处理,但是在正常处理阶段则不会当作一个架构元素,因为在这个阶段这 些信息已经分布到了系统中的各处。事实上,配置文件也有可能定义了正常处理阶段的架构。 系统架构的一个整体描述必须既能够描述各个阶段的系统架构的行为,也能够描述在各个阶 段之间的架构的迁移 Pery和wolf[105]将处理元素定义为“数据的转换”,而$haw等人[118]则将组件描述 为“计算和状态的所在地”。Shaw和 Clements[122进步指出:“组件是在运行时执行某 种功能的软件单元。这样的例子有程序、对象、进程、过滤器。”这引出了软件架构 ( software architecture)和通常所说的软件结构( software structure)之间的一个重要的区别 软件架构是软件系统在运行时的抽象,而软件结枃则是静态源代码的属性。尽管将源代码的 模块化结构与正在运行的系统中的行为部件对应起来是有好处的,使用相同的代码部分(例 如共亨库)来实现独立的软件组件也有很多好处。我们将软件架构和源代码结构分离开来是 为了更好的关注软件运行时的特性,这些特性不依赖于一个特定的组件实现。因此,尽管架 构的设计和源代码结构的设计关系密切,它们其实是分离的设计活动。不幸的是,有些软件 架构的描述并没有明确指出这个区别(例如[9])。 1.2元素 个软件架构由一些架构元素(组件、连接器和数据)的配置来定义,这些元 素之问的关系受到约束,以获得想要得到的一组架构属性。 Perry和wolf[105]对软件架构的范围和知识基础进行了全面的检查,他们提出了一个 模型,将软件架构定义为一组架构元素,这些元素具冇通过一组基本原理( rationale)来描 述的特殊形式。架构元素包括处理、数据、连接元素。形式则由元素的属性和元素之间的关

...展开详情
所需积分/C币:13 上传时间:2014-11-01 资源大小:849KB
举报 举报 收藏 收藏
分享 分享

评论 下载该资源后可以进行评论 1

woyaodedaan 还没看完,但对RESTful API特别感兴趣。
2015-06-10
回复
中英文版--Architectural Styles and the Design of Network-based Software Architectures

Architectural Styles and the Design of Network-based Software Architectures,对基于网络的软件架构设计以及架构风格进行了拓展,并主要揭示了软件架构的一些原理性的东西

立即下载
Architectural Styles and the Design of Network-based Software Architectures-cn

本论文是Web发展史上一篇非常重要的技术文献。出于社会责任感,译者认为极其有 必要将它介绍给国人,使国人得以一窥HTTP和URI等Web架构标准背后的基本原理。基 于相同的基本原理,Web开发者能够设计并建造出最为高效的Web应用。因此译者发起了 这一公益性的翻译项目。除了四位主要的译者以外,来自新浪公司的田乐、丁舜佳和梁晓星 也参与了第3章的部分翻译工作,对他们的辛勤工作表示感谢。此外,国内一些专家认真地 审阅了论文的译文,提出了很多中肯的评论,使得译文的质量得以保证。在此向他们表示诚 挚的感谢,他们是:庄表伟、李琳骁、金尹、孟岩、骆古道、范凯、刘新生、刘江。

立即下载
【中文版】architectural styles and the design of network-based software architectures

【中文版】architectural styles and the design of network-based software architectures

立即下载
Garlan and Shaw describe several architectural styles for software.pdf

介绍了 Garlan and Shaw 描述的软件架构风格和样式, 我也不太懂。 找到这个就看了。 稀里糊涂。

立即下载
Roy Thomas Fielding博士论文REST中文版+英文版

Roy Thomas Fielding博士论文REST中文版+英文版 Architectural Styles and the Design of Network-based Software Architectures

立即下载
REST技术研究报告

REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,他是由Roy Thomas Fielding博士在他的论文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。

立即下载
The Essentials of Interaction Design

Table of Contents The Art of Software Architecture—Design Methods and Techniques Introduction Chapter 1 - Introduction to Software Architecture Chapter 2 - The Software Product Life Cycle Chapter 3 - The Architecture Design Process Chapter 4 - Introduction to Software Design Chapter

立即下载
Togaf 9.2 最新版本

Togaf 9.2,最新版本。This version builds on previous versions of the TOGAF standard and updates the material available to architecture practitioners to assist them in building a sustainable Enterprise Architecture. Work on White Papers and Guides describing how to to integrate and use this standard with o

立即下载
使用 JAX-RS 简化 REST 应用开发

REST 简介 REST 是英文 Representational State Transfer 的缩写,有中文翻译为“具象状态传输”。REST 这个术语是由 Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的。REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 基于 HTTP,URI,以及 XML 这些现有的广泛流行的协议和标准,伴随着 REST,HTTP 协议得到了更加正确的使用。 相较

立即下载
Documenting Software Architecture.pdf

第二版英文原版。 This book is the bible of documenting software architectures. It is a mandatory read for all software architects. It should also be read by the various stakeholders who have invested in a software architect so they have some idea about what their investment should be accomplishing. This v

立即下载
Professional.MFC.with.VC6

Contents Chapter 1: The Microsoft Developer Studio The Microsoft Developer Studio The Project Workspace Project Workspace Window Project Configurations Managing Complex Projects Project Settings Converting Projects Source Code Files Resource Scripts ResourceView Creating New Resources Ide

立即下载
ModbusTCP/RTU网关设计

基于UIP协议栈,实现MODBUS联网,可参考本文档资料,有MODBUS协议介绍

立即下载
html+css+js制作的一个动态的新年贺卡

该代码是http://blog.csdn.net/qq_29656961/article/details/78155792博客里面的代码,代码里面有要用到的图片资源和音乐资源。

立即下载
iCopy解码软件v1.0.1.7.exe

解ic,id,hid卡密码破解ic,id,hid卡密码破解ic,id,hid破解ic,id,hid卡破解ic,id,hid卡密码密码卡密码破解ic,id,hid卡...

立即下载
分布式服务框架原理与实践(高清完整版)

第1章应用架构演进1 1.1传统垂直应用架构2 1.1.1垂直应用架构介绍2 1.1.2垂直应用架构面临的挑战4 1.2RPC架构6 1.2.1RPC框架原理6 1.2.2最简单的RPC框架实现8 1.2.3业界主流RPC框架14 1.2.4RPC框架面临的挑战17 1.3SOA服务化架构18 1.3.1面向服务设计的原则18 1.3.2服务治理19 1.4微服务架构21 1.4.1什么是微服务21 1.4.2微服务架构对比SOA22 1.5总结23 第2章分布式服务框架入门25 2.1分布式服务框架诞生背景26 2.1.1应用从集中式走向分布式.26?

立即下载
Camtasia 9安装及破解方法绝对有效

附件中注册方法亲测有效,加以整理与大家共享。 由于附件大于60m传不上去,另附Camtasia 9百度云下载地址。免费自取 链接:http://pan.baidu.com/s/1kVABnhH 密码:xees

立即下载
电磁场与电磁波第四版谢处方 PDF

电磁场与电磁波第四版谢处方 (清晰版),做天线设计的可以作为参考。

立即下载
压缩包爆破解密工具(7z、rar、zip)

压缩包内包含三个工具,分别可以用来爆破解密7z压缩包、rar压缩包和zip压缩包。

立即下载
source insight 4.0.0087 注册机序列号Patched(2017/10/17)

最新的sourceinsight4.0.0087和谐license及和谐文件。真正的4087版本,使用附件中的license文件,替换sourceinsight4.exe

立即下载
Java项目经验汇总(简历项目素材)

Java项目经验汇总(简历项目素材)

立即下载