面向资源的架构(ROA)---基于WebNUDT报告人:肖友Architectureisinhabitedsculpture提要简介—ROA定义1背景—REST定义、ROA相关概念2特征—ROA四大属性3实践—REST设计原则、ROA设计步骤4结语—ROA之美、参考文献5Architectureisinhabitedsculpture简介ROA面向资源的架构(Resource-OrientedArchitecture)AREST-fulArchitecture一种具体的REST式的架构AWebServiceMethod一种把实际问题转换成REST式Web服务的方法Architectureisinhabitedsculpture背景———RESTREST(RepresentationalStateTransfer):表示性状态转变,分布式超媒体软件的一种架构的风格。RoyFielding博士在2000年他的博士论文中提出来的一种软件架构风格。REST是一套设计原则(风格/模式),而非具体的架构或者标准。在Web开发过程中的一种通过URL进行系统结构设计的新思维方式。REST是一种轻量级的WebService架构风格其实现和操作较SOAP和XML-RPC简洁;性能、效率和易用性优于SOAP;可利用缓存(Cache)机制提高响应的速度。“设计良好的网络应用表现为一系列的网页,这些网页可以看做虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。”Architectureisinhabitedsculpture背景———REST:SOAP/XML-RPC/RESTSOAPXML-RPCREST定义SOAP是用于在分散的分布式环境中进行信息交换的轻量级协议。该协议基于XML,包括三个部分:信封、一组编码规则以及用于表示远程过程调用和响应的约定。这是使用HTTP作为传输协议和使用XML作为编码方式的远程过程调用。XML-RPC的设计力求简单,并同时允许传输、处理和返回复杂数据结构。代表性状态传输旨在反映设计良好的Web应用程序的行为图像:由网页组成的网络,其中用户通过选择链接继续进行使用,选择链接将导致将下一页传输给用户并进行呈现,以供其使用。目标SOAP可实现用户定义的数据类型,提供指定接收者的功能、消息特定的处理控制以及其他功能,从而对XML-RPC进行了扩展。非常简单且条理清楚的可扩展格式。HTML编码人员应该能够查看包含XML-RPC过程调用的文件,理解其进行的工作,并能够对其进行修改,只需一两次尝试就能使其正常工作。此协议非常容易实现,可以快速对其进行调整,以在其他环境或其他操作系统上运行。创建REST的目的是为了提供有关Web应该如何运行的设计模式,并作为Web标准和设计Web服务的指导框架。Architectureisinhabitedsculpture背景———ROA相关概念资源一个资源就是某个可以存放在计算机上并表示为比特流的事物。资源的名称(URI)资源必须至少有一个URI。它既是资源的名称,也是资源的地址。资源的表示Web上获取的非资源而是其表示。资源可有各种表示。资源间的链接大多数表示是超媒体(Hypermedia)的,它不仅包含数据,还包含指向其它资源的链接。HTMLXMLTextFlash资源标识符(URI)Architectureisinhabitedsculpture可寻址性统一接口无状态性连通性特征———ROA四大属性四大属性Architectureisinhabitedsculpture特征———ROA四大属性资源是通过URI暴露的,URI是可以寻址的。=ROA“浏览器打开google网站,搜索框输入ROA,点击搜索”服务器所能提供的每一则有价值的信息都应该作为资源来发布。资源必须至少有一个URI。它既是资源的名称,也是资源的地址。区别资源的可寻址与应用的可寻址:许多Web应用不是像Web一样可寻址的。如GmailWeb服务是可寻址的,不过调用该服务的GmailWeb应用不是可寻址的。可寻址性=洋葱头&search=query&view=tlArchitectureisinhabitedsculpture特征———ROA四大属性可寻址性使你的服务的各个重要方面都可以被外界访问。URI可以作为每个重要方面的一个唯一的标识符。而URI是可以被收藏,可在应用中传递,可指代实际资源。可寻址性令别人可以使用你的服务构建mashups应用,将其用于你意想不到的场合。可寻址性Architectureisinhabitedsculpture特征———ROA四大属性状态分两种:应用状态(applicationstate)和资源状态(resourcestate)。前者保存在客户端,后者保存在服务端。每个HTTP请求是完全孤立。请求包含服务器实现该请求的全部信息,不依赖于之前某个请求。无状态性意味着服务端不应保存应用状态,客户端应当管理自己的应用状态。无状态性Architectureisinhabitedsculpture特征———ROA四大属性无状态性易于提升应用的规模。若一台服务器无法处理所有请求,可进行负载均衡,让请求转移一半。但是选择哪个一半呢?无所谓啦,因为具无状态性,每个请求皆是自包含的(self-contained)。具有更高的可靠性。若客户端请求超时,则客户端只要把请求重发一遍即可。别做会引起麻烦的事情Architectureisinhabitedsculpture特征———ROA四大属性资源的表示“具有链接”的特性即连通性,它要求资源应当通过它们的表示彼此链接起来。“将超媒体作为应用状态的引擎(Hypermediaastheengingofapplicationstate)”HTTP“会话”的当前状态不是作为资源状态保存在服务器上的,而是被客户端作为应用状态来跟踪的。客户端应用状态在服务器提供的“超媒体”(即超文本表示里的链接和表单)的指引下发生变迁。连通性Architectureisinhabitedsculpture特征———ROA四大属性连通性设想一个网页不是为你提供超链接,而是通过文字描述告诉你如何构造其他页面的URIs,那将多么的痛苦事啊?!可使客户端处理那些不断变化的关系。一个Maps数据更新比例放大的例子。Architectureisinhabitedsculpture特征———ROA四大属性连通性采用经纬度坐标采用X-Y坐标(依靠自己构造URI的客户端不能正常工作)换作GoogleMaps的图块URIs只有“通过跟随链接的方式获取相邻图块”的客户端程序,才能自动适应新的比例———把资源彼此连接起来是如此之重要。Architectureisinhabitedsculpture特征———ROA四大属性四个通用操作接口:获取资源的一个表示:HTTPGET。创建一个新资源:向一个新URI发送HTTPPUT,或向一个已有的URI发送HTTPPOST修改已有资源:向已有URI发送HTTPPUT删除已有资源:HTTPDELETE两个辅助性操作接口:获取一个只包含元数据的表示:HTTPHEAD查看一个资源支持哪些HTTP方法:HTTPOPTIONS安全性&幂等性GET和HEAD请求是安全的GET、HEAD、PUT和DELETE请求是幂等的统一接口Architectureisinhabitedsculpture特征———ROA四大属性统一接口统一接口施加的约束(GET和HEAD是安全的,PUT和DELETE是幂等的)增加了HTTP得可靠性。强大之处在于统一性。若不使用ROA的统一接口,而是用别的,虽然是获取了与某些Web服务的兼容性,但牺牲了与其他Web服务的兼容性。Architectureisinhabitedsculpture实践———REST设计原则网络上的所有事物都被抽象为资源每个资源对应一个唯一的资源标识URI通过HTTP协议方法作连接器对资源进行操作对资源的任何操作不改变资源标识URI所有的操作都是无状态的降低开发的复杂性,提高系统可伸缩性Architectureisinhabitedsculpture用超链接和表单把该资源与已有资源联系起来设计来自客户端的表示暴露一个统一接口的子集考虑有哪些典型的事件经过考虑可能出现哪些错误情况用URI为该资源命名设计发给客户端的表示实践———ROA设计步骤规划数据集把数据集划分为资源对于其中每种资源Architectureisinhabitedsculpture结语———ROA之美通过ROA,我们可基于Web服务提出并系统化最佳实践,让程序员可轻易地构建优雅的、符合设计用途的、融入Web而非仅构筑在Web之上的分布式Web应用。简单性可伸缩性统一性可靠性Architectureisinhabitedsculpture结语———参考文献RoyFielding博士论文:《ArchitecturalStylesandtheDesignofNetwork-BasedSoftwareArchitecture》LeonardRicbardson&SamRuby著:《RESTful—WebServices中文版》DiomidisSpinellisandGeorgiosGousios著:《BeautifulArchitecture》Architectureisinhabitedsculpture相关工作重点关注ROA的原理以及PPT的制作和汇报(*)重点关注ROA的背景及发展趋势(*)重点关注ROA的实践与应用(*)重点关注ROA与REST相关性(*)ThankYou