APP下载

一种基于REST架构的高校移动教务数据开放平台设计方法

2014-03-07赵启升李存华吴庚午刘小明

关键词:校验架构框架

赵启升,李存华,吴庚午,刘小明

(1.淮海工学院计算机工程学院,江苏连云港222005)(2.淮海工学院信息中心,江苏 连云港222005)

随着移动互联网的快速发展,教育领域的教学模式、学习方式也逐渐发生变化.传统的Web应用正逐步被Android,iOS等智能手机APP所取代,越来越多的开发者开始关注高校APP的开发.但是由于高校内各教务系统平台不统一,数据模型不兼容,校园APP的开发难度较大.设计并实现一个用于整合高校内各教务系统资源,为开发者提供统一API的数据开放平台就显得尤为重要[1].

1 RESTful Web Service介绍

表现层状态转移(representational state transfer,REST)是Roy Fielding博士在2000年提出来的一种软件风格架构,根据REST原则,RESTful架构的系统平台将数据抽象成资源,通过通用资源标识符(uniform resource identifier,URI)来标识数据资源的唯一性.与传统的SOAP Web Service架构相比,REST风格架构的Web Service使得用户仅仅通过访问URI就可以获取相应的数据资源,并通过HTTP协议的简单动作就能完成对资源的操作[2].

一个符合REST原则的服务架构就称其为RESTful架构.REST原则主要有3个概念:资源(resources)、表现层(representation)以及状态转化(state transfer).只有清楚理解这3个概念,才能设计出严格符合REST风格的架构[4].

1)资源:表现层状态转化是资源表现层状态转化,因为和系统交互的是网络上一个具体存在的实体,或者说是一个具体的信息体.系统通过URI指向某个具体的资源,并与之交互.URI就是资源的唯一标识符.

2)表现层:URI只代表具体的资源,而资源的呈现方式就是表现层.表现层是资源具体表现格式的体现,比如XML格式、JSON格式等.这具体由HTTP协议信息头的Accept和Content-Type字段来指定.

3)状态转化:互联网通信协议HTTP协议是一个无状态的协议(事务处理没有记忆能力,每一次请求都是与之前请求毫无关系的独立事务),通过HTTP协议提供的4个动作:GET/PUT/DELETE/POST来实现资源的状态转化[3].REST架构如图1.

图1REST架构Fig.1 Architecture diagram of REST

1.1 RPC风格与REST风格比较

RPC风格的Web Service服务器通常会从客户端收到一个数据信封,然后处理,完成之后再向客户端返回一个数据信封.这种方式使得服务器无法通过URI来标识资源,客户端也无法利用HTTP的特性来操作资源.由于客户端和服务器的交互基本都是基于HTTP的,所以RPC风格的Web Service在空间信息共享和互操作上还存在很多问题.

相比之下,REST风格架构从设计之初就已经解决了这些问题,它是一种面向资源的架构.REST通过URI标识了资源的唯一性,并且只需HTTP请求动作就能实现对于资源的操作.REST风格架构有更强的伸缩性和交互能力.

1.2 REST架构的设计与实现

1.2.1 URI设计

一个合理的URI设计就是一个良好的系统架构,因为REST允许通过URI设计系统,所以在实现REST架构的时候,首要考虑的就是如何设计一个合理的URI.REST架构主要用于为开发者提供API,因此在设计URI的时候还需要加入API的版本号.此外,URI中只能有名词,这些名词往往与数据库中的表名相对应,URI中还需要相应的参数来过滤结果.URI格式如图2.

图2 URI图示Fig.2 URI Icon

1.2.2 URI重写

URI是服务器资源的身份标识,它是唯一的.但是服务器并不直接处理该URI.服务器的重写规则可将URI转换成服务器能够识别的有效URL,在实现REST架构时,重写URI是必要的过程[5].

1.2.3 状态码设计

对于客户端的请求,服务器处理完成之后会返回数据结果和状态码,状态码用于标识服务器的每一次处理状态.常见状态码及其含义如表1.

表1 状态码Table 1 Status code

2 Web Service系统框架介绍

框架的作用主要是提高程序的可重用性,将业务逻辑和具体实现相互分离,为APP开发人员提供一个易扩展、易维护、高效稳定的应用程序骨架.依据Web Service的具体需求,文中实现的系统框架需要用于接口请求验证的authentication模块、管理系统缓存的Cache管理模块、配置和加载具体模块方法的route模块、用于数据格式化输出的Parse模块以及负责数据库操作的DAO模块[6].

1)DAO数据库访问抽象层,本文将数据库连接和数据库基本操作封装在DAO层中,每一个实体对象都继承了该DAO层,通过集成和重写DAO层的方法与数据库进行交互,实现数据库的基本操作.这样也使得底层的数据库操作与业务逻辑分离,降低了框架的耦合性[7-8].

2)parser层,位于DAO层之上,该层将数据封装格式化为指定的格式或对象,然后交由指定的服务模块处理,系统处理之后的结果也由该模块打包成指定格式并返回给客户端.

3)cache management,文中实现系统中的缓存管理主要有Session缓存和文件缓存两种形式,session缓存用来存储用户基本信息和基本校验数据.它比文件缓存和数据库操作更高效,很适合在频繁调用数据的时候使用.文件缓存用于保存本系统的临时查询和处理结果,所有的缓存都有相应的回收策略,在一定时间之后会自动更新缓存数据.

4)authenticate认证机制,为确保API接口调用的合法性,本系统设计了相应的验证机制,用于校验用户请求的合法性.本系统主要通过用户注册时提供的设备IMEI来校验用户请求的合法性.

3 Web Service系统框架实现

文中实现系统框架的执行流程:对于每一个API请求,系统都会对其进行合法性验证,验证不通过,则返回请求失败的信息到客户端;如果通过验证,系统执行框架的路由模块,路由模块根据请求URL加载相应的模块和方法,系统将结果数据处理成统一的格式后返回给客户端,整个流程到此执行完毕.

3.1 请求验证层实现

请求验证层主要负责对每一次用户请求进行验证,可通过Authentic类实现.其中,authBySession方法通过session缓存来获取用户IMEI进行校验,authByDb方法通过数据库校验用户的合法IMEI.authByIP方法校验用户IP,主要用于一些有IP限制的接口.authByRequestNum方法用于限制用户的请求次数,这主要针对像通知这类请求比较频繁的接口.RequestAuth类继承了Authentic类,其方法requestCheck是根据父类给出的校验方法制定校验规则,从而实现整个校验流程,postDataValidate方法是对每个接口所提交的参数进行合法性检查.类图如图3所示.

图3 请求验证层类Fig.3 Class diagram of request validation layer

3.2 路由和缓存管理层实现

路由和缓存管理层主要设定缓存管理机制和路由加载机制,缓存管理用于管理用户的请求数据缓存,路由加载用于加载和配置框架具体执行的模块和方法.以session缓存管理为例,在缓存管理模块中,sessionCache类通过继承父类Cache来重写父类的方法,从而完成整个缓存管理机制.其中父类中定义了读取缓存,写入缓存和判断过期时间3个基本方法.其类图如图4.

3.3 解析层实现

解析层主要实现框架的网页解析功能和数据格式化.Curl类定义了网页解析功能的集体实现,HttpCurl类通过继承Curl父类,重载父类的curl方法,实现按照不同的情况解析网页的功能,Parser类定义了网页解析之后数据处理的常用方法和数据返回格式化的常用操作.其类图如图5.

图4 缓存管理类Fig.4 Class diagram of cache management

图5 解析层类Fig.5 Class diagram of analytical layer

4 系统运行测试与分析

本系统的运行环境为Windows Server 2008,IIS版本为7.5,数据库版本为MySQL 5.5,Oracle 11g,网络环境为电信100Mbps,PHP版本为5.4.进行系统测试的目的是检查系统框架基础模块能否正确运行和系统接口是否符合REST原则.本系统所做测试主要以APP开发者用户的身份测试:测试系统的用户基本信息查询和成绩查询接口.开发者用户主要通过系统提供的接口URI来调用相关数据,该URI不仅包含了调用的资源和返回的格式,而且还定义了调用资源的动作(增、删、改、查).本测试所用URI如表2.

表2 测试URITable 2 URI testing

针对上述情况测试结果如下:

1)当用户进行合法查询请求时,系统通过接口返回数据来验证用户合法性并进行处理,学生成绩信息部分 Json 格式数据为:[{″XN″:″2013 -2014″,″XQ″:″1″,″KCMC″:″编译原理″,″XF″:″3″,″CJ″:″缓考″,″JD″:″0″,″KCXZ″:″必修课″,″BKCJ″:null,″CXCJ″:null,″FXBJ″:″0″,″KCGS″:null},…]返回结果如图6.

图6 基本信息查询Fig.6 Results of basic information query

2)当用户进行非法查询请求时,系统验证用户请求非法,不对用户请求作出处理,返回错误信息,返回结果如图7.

图7 非法请求结果Fig.7 Results of illegal request

3)当用户进行错误请求时,系统验证用户请求模块不存在,不对用户请求作出处理,返回提示信息,返回结果如图8.

图8 错误请求结果Fig.8 Results of error request

从测试结果来看,本系统针对不同的请求URL返回了不同的信息,所返回信息的格式与URL申明格式一致,系统接口完全符合REST风格,开发者成功调用获取相关数据及数据表现形式,由此可以看出,在框架化的系统支持下的REST风格接口的调用简单快速,整个系统也更加轻量.

5 结论

针对高校内各教务系统平台不统一,校园APP开发者获取教务数据难度大这些问题,本文引入REST原则,以框架化的程序设计方法,构建了一个基于REST的移动教务高校数据开放平台.该平台只需通过简单的HTTP协议就可以完成数据调用和共享.虽然本系统的核心功能模块不多,但是框架化的设计使得系统本身极易扩展.测试说明系统运行正常且非常轻量.但是本系统并没有实现教务系统的大部分模块,服务器负载均衡、数据库优化、安全机制等问题有待进一步的研究.

References)

[1] 黄小东.基于RESTful web服务与Oauth 2.0协议的高校教学数据开放平台设计研究[J].数字技术与应用,2013(10):152-155.

[2] 潘冰.基于Rails的RESTful Web Service研究与实现[J].计算机应用与软件,2010,27(10):188-190.Pan Bing.Studying and implementing Rails-based Restful Web Service[J].Computer Applications and Soft-ware,2010,27(10):188 -190.(in Chinese)

[3] 阮一峰.理解RESTful架构[EB/OL].[2014-05-10].http:∥www.ruanyifeng.com/blog/2011/09/restful.html.

[4] 唐明伟.RESTful架构下图书管理系统的研究与实现[D].南京:河海大学,2010.

[5] Bryant P.REST -ful URI design[EB/OL].[2014-05 -12].http:∥blog.2partsmagic.com/restful- uridesign.

[6] 潘冰.基于Rails的RESTfulWebService研究与实现[D].广东:暨南大学,2010.

[7] Aaron Saray.PHP设计模式[M].北京:清华大学出版社,2010.

[8] 潘冰.基于Rails的RESTfulWebService研究与实现[D].广东:暨南大学,2010.

猜你喜欢

校验架构框架
基于FPGA的RNN硬件加速架构
框架
功能架构在电子电气架构开发中的应用和实践
广义框架的不相交性
炉温均匀性校验在铸锻企业的应用
WebGIS架构下的地理信息系统构建研究
关于原点对称的不规则Gabor框架的构造
一种基于OpenStack的云应用开发框架
大型电动机高阻抗差动保护稳定校验研究
一种基于FPGA+ARM架构的μPMU实现