硅谷杂志:基于REST软件体系结构研究及应用 |
2012-07-03 11:10 作者:周文哲 王如龙 张锦 来源:硅谷网-《硅谷》杂志 HV: 编辑: 【搜索试试】
|
|
摘要:针对显示层、中间件层、服务层强耦合的问题,通过对表述性状态转移(REST)软件架构的研究,降低开发的复杂性,提高系统的可伸缩性,给出其在ICT(InformationCommunicationTechnology)中点击拨号系统中的运用,验证简化REST软件架构设计的有效性,以及通过分离客户端代码和服务器端代码,实现易于测试和维护、可复用性高等优点。
关键词:表述性状态转移;软件架构;点击拨号系统
中图分类号:TD67文献标识码:A文章编号:1671—7597(2012)0120
【《硅谷》杂志2012年1月刊文】
0引言
随着Internet的快速增长,Web已经对各行各业及我们的工作和生活产生了深远的影响。由于Web开发语言却多种多样,每种语言都定义了自己独特的生态环境,不同生态环境的程序很难跨越彼此的边界,而在多数互联网应用中,系统的各个部分通常既是生产者又是消费者,必须要打破生态环境的界限才能相互协作,进而达到软件复用的目的。REST软件架构风格旨在研究如何为互联网应用构架设计和异构系统集成设计提供可复用的简洁模型,切合HTTP协议,从而极大的提高架构的可扩展性。
1REST软件架构
表述性状态转移(RepresentationalStateTransfer,REST)是一种分布式超媒体系统架构的风格,可以降低开发的复杂性,提高系统的可伸缩性。层级理论是构建复杂软件体系的基本原则,可通过URI来反映这些资源的层级关系,如果URI能够拥有良好的设计,那么它将保证整个系统结构的设计是合理的。比如:在一个用户交易系统中所有的订单我们可以把URI设计成为/orders,而/orders/{order}则代表某个特定的单个订单,不幸的是大部分的系统层级关系都远比这复杂的多,那么需要一定的技巧来设计这些URI,下面给出几种URI的定义:
1)唯一URI:由客户端登录后在基础URI上追加标识信息并唯一标识某一特定对象的URI。
2)动作URI:在客户端所引用的一种URI,根据执行不同的HTTP动作,可返回唯一URI的引用。
3)基础URI:它是高层的抽象URI,为动作URI和唯一URI提供一个确切的上下文。
4)视图URI:它代表某些数据的视图,可以由内嵌服务器端算法组织的数据所引用,目的在于提供易记和易用的URI,一般情况下它只接受HTTPGET。
5)资源URI:指向某个特定数据资源的URI,它能够处理所有的HTTP的动词(GET,PUT,POST和DELETE)。
从REST的概念上来看,所有可以被抽象为资源的东西都可以使用URI来表示,一般情况下,我们先给定一个根URI,然后对这个URI进行提炼,去考究在不同级别的URI上使用单独动作将要做什么事,并赋予他们不同的HTTP动作,一般情况下根URI只适用HTTP的GET操作,而其他层级的URI要视具体业务而定。
2基于REST软件架构的点击拨号系统
2.1系统功能结构简介
点击拨号系统(ClicktodialSystem,CTD)作为电信/互联网业务能力开放的核心部件,提供了一套符合互联网开发者习惯的开放API接口。该系统设计以资源为研究对象,通过划分资源、定义资源,然后用超媒体作为表述介质,提供客户所需求的服务。CTD核心资源模块由两个主要模块组成,每个模块又分为若干子模块,其中一级CTD业务平台完成全网应用的接入,可以面向全网用户服务,对应用平台或用户做接入认证,不包含CTD业务逻辑;省级CTD业务平台完成省级应用的接入,面向省内用户服务,可以接收一级CTD业务平台路由的请求,完成一级应用在该省的服务。省级CTD业务平台包含CTD业务逻辑。
2.2REST风格的CTD架构设计概要
考虑到CTD需要支持易于多变的验证逻辑,良好的用户可察觉性能,为结构化的信息提供统一的、一致的接口并能支持增量部署,我们在设计之初引入了REST软件体系结构的设计思想。验证逻辑被抽取出来由第三方权限服务器处理,由于采用REST风格,权限服务器并不需要关心具体应用层协议逻辑的细节,可支持变化的验证逻辑。为了分离关注点,提高系统的内聚性、灵活性,CTD采取分层架构的思想,业务逻辑和数据可以由图形用户接口客户端和自动客户端共享。从数据访问中分离业务逻辑可实现数据库独立性,并为各种类型的数据存储提供插件能力。分层在改善了系统的可伸缩性的同时却降低了数据处理的开销和延迟,CTD使用明确语义的URI和HTTP动词配合,充分利用HTTP的缓存使得用户可察觉性能得到补偿。
2.3REST风格中的URI设计
REST使用一个资源标识符来标识组件之间交互所涉及到的特定资源。REST连接器提供了访问和操作资源的值集合的一个通用的接口,而无须关心其隶属函数。在设计系统的时候,通过分析数据集,我们对外暴露的基础URI举例如下:1)/services/controller2)/services/jbpm/token3)/services/syn
4)/services/ftp5)/services/administration。
其中/services/controller用于管理系统的根URI,/services/jbpm/token是用于对工作流引擎的管理,但对于工作流引擎的状态使用CGI参数的做法如action=start而不是
/services/jbpm/token/start,原因在于状态并不是一种资源,而是资源的表现形式。在基础URI提供的上下文环境中对于复杂数据的获取和特定资源的操作分别提供了视图URI和资源URI,如一级平台特权用户初始化全网个性化铃音时,通过Post触发/services/administration/userRing/[ringname],一级平台接口使用视图URI触发同步二级平台以及Put触发/services/ftp/userRing/[ringname]来下载用户铃音。通过对资源和功能的识别,使系统变动可根据Http的四种动作进行自由变动,提高了系统的可扩展性,组件间的可伸缩性。
2.4需求变更中的系统功能演进
在软件开发的过程中永远不变的是变化。在开发完成第一个版本之后,用户提出了一些系统不足和改进意见,其中比较典型的是如下两个:1)由于数据量太大,需要增加服务器,而且需要保证在某个服务器蹦掉的时候,前端的应用能够继续提供服务,保证用户具有良好的可察觉性。2)增加对mm7gw(彩信网关)的服务能力。由于采用了REST风格的软件架构,本文分析如下:
状态包括连接的状态和资源的状态,二者并无直接的关联。REST考虑的是资源的状态,而极力避免连接的状态(这会在伸缩性上造成麻烦),也就是“每次请求都是独立的”,这意味着可以在任何另外一台web服务器上来处理这个请求,request本身包含处理这个请求的所需信息,所以增加服务器并保证在某个服务器蹦掉的时候,前端的应用能够继续提供服务这条原则只需要做很少的工作即可,由于每次连接包含了请求的全部信息,必然会有网络延迟,这一点上利用REST清晰的语义导致提高幂等GET对缓存的命中率上得到补偿。第二:增加mm7gw的服务能力本身不是一个问题,问题在于对mm7gw的验证上,由于采用REST规范,mm7gw所需的验证消息全部都会放到HTTP的头部,所以不用对验证服务器进行额外处理。
3结束语
实践证明,REST软件架构风格的CTD系统具有良好的扩展性,通过使用开放标准,使得应用的部署变得更加容易,在不大规模修改应用的前提下,使得后期开发及维护效率大幅度提高,节约了成本,降低了工作量。
基金项目:国家自然科学基金项目(60901080);国家科技支撑计划项目(2006BAF01A13)。
参考文献:
[1]RoyThomasFielding,ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures,2000.
[2]CesarePautasso.RESTfulWebservicecompositionwithBPELforREST[J].Data;knowledgeengineering,2009,68(9):777-792.
作者简介:
周文哲(1986-),男,湖南湘潭人,硕士研究生,研究方向:软件架构;王如龙(1954-),男,湖南长沙人,教授,研究方向:需求工程;张锦(1979-),男,河南信阳人,副教授,研究方向:软件工程。(注:本文版权归作者本人和硅谷杂志所有,禁止他人未经授权转载)
|
|
|
|
【对“硅谷杂志:基于REST软件体系结构研究及应用”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|
|
|