基于REST风格的WEB API架构研究❋
2016-03-17王仲洲杨晓洪王剑平
王仲洲,杨晓洪,王剑平,张 果
(昆明理工大学信息工程与自动化学院,昆明650500)
·微机应用·
基于REST风格的WEB API架构研究❋
王仲洲,杨晓洪,王剑平,张果
(昆明理工大学信息工程与自动化学院,昆明650500)
(Representational State Transfer)表述性状态传递,描述了一个架构形式的网络系统,它实际上是设计上的一系列约束,其中主要有无状态服务器、分布式缓存等特点。一般来说,REST架构风格的Web Service其实就是和传统Web Service相结合的一种轻量级实现。REST架构和传统的单一软件架构相比不仅能满足不同平台之间的相互访问,同时又剔除了传统Web Services的繁琐与笨重,完全符合目前人们对web服务的需求。REST在Web中取得了巨大的成就,目前已取代SOAP和Web成为ASP.NET WEB API最简单的方法。文中对基于REST风格的ASP.NET WEB API架构进行了研究与分析。
表述性状态传递;接口;web服务;无状态;网络系统;分布式缓存
1 引 言
REST是2000年由Roy Fielding在就读加州大学欧文分校期间在学术论文“Architectural Styles and the Design of Network-based Software Architectures”中提出,目前基于REST风格的框架已经被开发出来,并且被广泛应用到各个平台系统中。
2 REST简介
首先,REST是Web自身的架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST是世界上最成功的分布式应用架构风格。它是为“运行在互联网环境”的“分布式”“超媒体”系统量身定制的[1]。互联网环境和企业内网环境是两个不同的概念,最主要的差别有以下两点:
首先无法控制其可伸缩性需求,无法控制其并发访问量,暴涨亦或暴跌。其次无法控制其安全性需求,无法控制客户端发来的请求格式,很可能是恶意请求。
而所谓的“超媒体系统”,即使用了超文本的系统,可以把“超媒体”理解为超文本+媒体内容。
REST是HTTP/1.1协议等Web规范的设计指导原则,HTTP/1.1协议正是为实现REST风格的架构而设计的。新的Web设计必须符合REST的要求,否则整个Web的体系架构会因为引入严重矛盾而崩溃。
2.1REST定义
表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。
REST这个概念于2000年由Roy Fielding博士首次提出。论文中对使用Web服务作为分布式计算平台的一系列软件体系结构原则进行了分析,同时提出了REST的概念,但是并没有获得太多关注。然而今天,REST相关的一些主流框架已经开始出现。
2.2REST的使用原则
学习REST一般都是先熟悉它的定义和背景。在此提出一个简要的定义:REST定义了Web的使用标准,这和很多人实际使用的框架有很大不同,例如HTTP和URI。如果你能坚持使用REST原则来设计应用程序,那你就会得到一个使用了优质Web架构的系统。虽然Java语言是世界上目前基于SOAP的web服务技术,但其余的将是另一个web服务,和真正意义上的网络服务有所区别。基于REST的web服务在不久的将来将成为网络服务的主流技术。其不仅仅是HTTP作为数据传输协议,而且还直接处理数据的工具。和当前web服务技术需要使用其他方法来完成数据处理工作不同,它们是完全独立的HTTP协议,这样增加了许多复杂的软件架构设计工作,剩下的认为充分利用现有的HTTP技术的网络容量[2]。HTTP不是一个简单的传递数据协议。其在传递数据时的优势,是REST的使用原则区别于其他原则的根本所在。
3 基于REST风格的ASP.NET WEB API架构研究
3.1ASP.NET WEB API简介
ASP.NET WEb Api首次出现是在ASP.NET MVC4的时候,到目前为止已经有一年半的历史了。它用于建立一个HTTP服务可以被各种客户端(例如:浏览器,智能手机终端,桌面客户端等)来调用的框架[3]。它并不是ASP.NET MVC框架的一部分,它作为ASP.NET平台的一部分可以用于MVC、Web Form或者是作为一个独立的服务存在。
时至今日,随着智能手机的飞速发展和普及,出现单页应用程序猛增的趋势。使用一个轻量级的Web Api来把你的服务暴露给客户端就显得极其重要[4]。ASP.NET Web Api将使用很多HTTP的特征(URIs,请求/相应的处理模型,标题部分,版本控制以及各种传输数据的格式)带你一起走进基于REST风格服务的精彩世界。
3.2基于REST风格的ASP.NET WEB API架构研究
REST定义了一组框架约束原则,设计者可以根据这些约束准则来设计开发以系统资源为中心的Web服务,比如在使用不同语言编写的客户端情况下通过HTTP处理和传输资源状态的方法[5]。如果按照使用它的Web服务的数量来看的话,REST已经成为最流行的Web服务设计模型。事实上,REST设计风格对Web的发展具有非常深远的影响,由于其使用便捷,已经基本取代了传统的基于SOAP和WSDL的接口设计。
按照RFC2616定义的协议规则开发使用HTTP方法,是基于REST风格的Web服务的主要特征之一[6]。比如,被定义为数据产生方法的HTTP GET/POST,前者是指在客户端检索资源从Web服务器获取相应数据,亦或是执行某个查询并预期Web服务器将查找某一组匹配资源然后使用该资源进行响应[7],而后者多用于更新资源。
REST要求使用方式与协议定义必须一致,同时开发人员必须要显式地使用HTTP方法。REST风格的这个基本设计原则建立了增、删、改和查(create,delete,update,and read,CRUD)操作与HTTP方法的PUT,DELETE,POST,GET之间一对一映射。
3.3使用REST架构
其实对于每个研究开发人员来说,具体怎么使用REST架构才是他们最关心的问题。REST不止是一种新颖的框架架构,它更是用一种全新思维方式来开发Web,使用URL设计系统结构。REST不是一种具体的标准或架构,而是一套设计原则或者说是一种架构风格。著名的Delicious和Flickr都是成功使用REST的案例,它们的客户端调用都极其方便,也都提供基于REST风格API的使用[8-9]。使用REST对于ASP.NET WEB API架构有着不可忽视的优势,能够更好的为实际服务。目前,在国外对于REST的研究已经非常成熟,许许多多的学者对其进行了研究,并且取得了一定的进展,REST架构的应用范围极其广泛。我国也进行了相应的研究,但是我国目前对于REST架构的研究还远远不能与发达国家相比,这需要更多的学者致力与此,同时还得参考国外经验,使REST架构的研究越来越成熟。
4 基于REST风格的ASP.NET WEB API架构应用
4.1基于REST风格的ASP.NET WEB API架构应用选择
传统的WCF Web API是基于RPC风格的API。由于WCF主要是基于SOAP的XML消息设计的,为了使Web API融入WCF,需要改动的地方太多,因此为了让WCF匹配”原生”HTTP世界,遇到了很多麻烦[10]。相比之下,ASP.NET MVC架构的基础设施既能非常简洁的创建各种控制器,又能优雅地处理HTTP的请求和响应,几乎是为创建这种新类型服务量身定做的。
支持URL路由,透过用户熟悉的MVC风格路由语义,生成干净的URL,根据Accept标头对请求和响应的序列化形式进行内容协商(Content Negotiation),支持大量输出格式,包括JSON、XML、ATOM等。默认对REST语义有完善支持,同时又不强制限定必须使用REST语义易于扩展的Formatter机制,支持添加新的输入/输出类型。可通过Http ResponseMessage类、HttpRequestMessage类和强类型枚举来描述大量的HTTP操作,提供对更高级的HTTP特性的深度支持。基于惯例的设计引导用户按HTTP Services的正确方式行事,Formatters和Filters延续了MVC的扩展模型,具备出色的扩展能力。用于非Web程序时,可以脱离IIS运行(Self-hostable),具备可测试性,测试机制的设计类似于MVC。
4.2基于REST风格的ASP.NET WEB API架构应用阶段
静态HTM阶段:在静态阶段主要是一些科研机构在使用Web。此时,Web就是一个支持超文本的共享文件库或服务器,因为它主要由一些静态HTML文档组成,比如学术,科研论文等。
CGI程序阶段:在此阶段,Web服务器通过编程API来编写各种应用程序,以此来把一些变化的内容提供给客户端。通过CGI(Common Gateway Interface)协议来完成服务器和应用程序之间的通信,应用程序被称作CGI程序。
脚本语言应用阶段:脚本语言阶段,一些支持Session的脚本语言技术开始出现在服务器端,比如ASP、PHP、ColdFusion等。而浏览器端也出现了Java Applet、Java Script等相关技术。这些技术的出现,更加丰富了Web服务器的动态内容。
瘦客户端应用阶段:在此阶段,能够独立运行的应用服务器出现在了服务器端。同时Web MVC新颖的开发模式问世,随之各种各样的Web MVC开发框架逐渐流行,并且占据了主导地位[11]。由于基于这些框架来开发的Web服务都是在服务器端直接生成全部的动态内容,因此基本都是瘦客户端应用。
RIA应用阶段:在RIA应用阶段,大量RIA(Rich Internet Application)技术的出现,极大地改善了Web应用的用户体验。最受欢迎的RIA技术无疑是DHTML+Ajax。Ajax技术可以使网页实现异步更新[12-14]。同时Prototype、Dojo、ExtJS、jQuery/jQuery UI等大量的Web前端DHTML开发库也流行开来,其中很多都支持单页面应用(Single Page Application)的开发。另外还出现了其他的RIA技术,比如Adobe公司的Flex技术、微软公司的Silverlight技术、Sun公司的JavaFX技术等等。
移动Web应用阶段:大量面向移动设备的Web应用技术在这个阶段开始出现[15]。除了一些原生的开发技术比如Android、iOS、Windows Phone等操作系统平台之外,基于HTML5的相关技术开发也变得越来越流行。
5 结束语
通过研究可知,基于REST风格的ASP.NET WEB API架构相对于其他风格有着不可代替的优势,其对于数据的传递等方面效果明显。REST在我国的很多方面都有应用,但是我国目前对于REST架构的研究还远远不能与发达国家相比,这需要更多的学者致力与此,同时还需要参考国外的经验,使REST架构的研究越来越深入,使得REST风格能更好更多地应用于实践。
[1]蒲海涛.物联网环境下基于上下文感知的智能交互关键技术研究[D].山东:山东科技大学,2011.PuHaiTao.Research On Key Technologies Of Intelligent Interaction Of Internet Of Things Based On Context-Aware[D].Shandong:Shandong University of Science and Technology,2011.
[2]李俊霖.物联网传感网络安全协议形式化研究[D].云南:云南大学,2011.Li Jun Lin.Things sensor network security protocols Formal Study[D].Yunnan:Yunnan University,2011.
[3]张智.面向物联网的多层次无线感知识和识别系统[D].浙江:浙江大学,2012.Zhang Zhi.Wireless multi-level sense of knowledge and identification systems for the Internet of Things[D].Zhejiang:Zhejiang University,2012.
[4]刘建华.面向服务的物联网动态维护及其资源配置研究[D].上海:上海大学,2012.Liu Jian Hua.Things dynamic service-oriented maintenance and Resource Allocation[D].Shanghai:Shanghai University,2012.
[5]王岩.物联网控制系统中信息传输关键技术研究[D].黑龙江:东北林业大学,2012.Wang Yan.Key Technology of Information Transmission Control System of Things[D].Heilongjiang:Northeast Forestry University,2012.
[6]闫韬.物联网隐私保护及密钥管理机制中若干关键技术研究[D].北京:北京邮电大学,2012.Yan Tao.Things privacy and key management in a number of key technologies[D].Beijing:Beijing University of Posts,2012.
[7]王延炯.物联网若干安全问题研究与应用[D].北京:北京邮电大学,2011.Wang Yan Jiong.Things several security issues Research and Application[D].Beijing:Beijing University of Posts,2011.
[8]李征.物联网带宽优化分配与智能物流监管系统研究[D].天津:天津大学,2012. Li Zheng.Distribution and Logistics Supervision System for Intelligent Network bandwidth optimization was[D].Tianjin:Tianjin University,2012.
[9]何文娜.大数据时代基于物联网和云计算的地质信息化研究[D].吉林:吉林大学,2013.He Wen Na.Big Data era based on networking and cloud computinggeologicalinformation[D].Jilin:Jilin University,2013.
[10]贾冰.基于语义的物联网服务架构及关键算法研究[D].吉林:吉林大学,2013.Jia Bing.Semantic networking services architecture and key algorithms based on[D].Jilin:Jilin University,2013.
[11]康玲,傅俊锋,王怀清,蔡劲松.基于ArcGIS Server的WebGIS应用系统开发[J].水电能源科学,2007,25(1):26-29.Kang Ling,Fu Jun Feng,Wang Huai Qing,Cai Jin Song.WebGISapplicationsystemdevelopmentbasedon ArcGIS Server[J].Hydroelectric Energy,2007,25(1):26-29.
[12]马先立,路璐.Web GIS开发技术的研究与探讨[J].中国数据通信,2002,7(7):80-82.Ma Xian Li,Lu Lu.Web GIS Development and Technology Discussion[J].China Data Communications,2002,7(7):80-82.
[13]方坤.基于RIA技术的构件式WebGIS表现层技术研究[D].湖北:中国地质大学,2009.Fang Kun.RIA technology component-based Web GIS presentation layer technology[D].Hubei:China University of Geosciences,2009.
[14]Tomokazu Fujino.SVG+Ajax+R:a new framework for Web GIS[J].Computational Statistics,2007,24(4):70-74.
[15]Arun K.Iyengar,Mark S.Squillante,Li Zhang.Analysis and characterization of large-scale Web server access patterns and performance[J].World Wide Web,1999, 16(22):15-18.
Research and analysis of ASP.NET WEB API architecture Based on REST-style
Wang Zhongzhou,Yang Xiaohong,Wang Jianping,Zhang Guo
(College of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650500,China)
Representational State Transfer,actually a series of constraints on the design,describes a form of network system architecture,with the main characteristics of no-status server and distributed caching features.Generally,REST-style Web Service,combining with the traditional one,is a lightweight implementation.The REST architecture,compared with the traditional single software one,not only meets mutual visits between different platforms but also eliminates the tedious and cumbersome of the traditional Web Services.It meets the demand of the users for web services.Because great achievements are made in the Web,REST has replaced SOAP and Web to ASP.NET WEB API.In this article,ASP.NET WEB API based on REST-style is studied and analyzed.
Interface;Representational state transfer;Web service;No status;Network system;Distributed cache
10.3969/j.issn.1002-2279.2016.05.013
TP274.2
A
1002-2279(2016)05-0052-04
❋国家自然科学基金(61364008);云南省应用基础研究重点项目(2014FA029);云南省教育厅重点基金项目(2013Z127);昆明理工大学复杂工业控制学科方向团队建设计划
王仲洲(1990-),男,河南省郑州市人,硕士研究生在读,主研方向:运动控制。
杨晓洪(1964-),女,云南昆明人,高级工程师,主研方向:嵌入式运动控制。
2016-04-18