李彬峰,陈建国,朱明敏(华南农业大学数学与信息学院,广州 510642)
基于REST架构的电子村务平台的设计与实现
李彬峰,陈建国,朱明敏
(华南农业大学数学与信息学院,广州510642)
摘要:
关键词:
REST;电子村务;Web服务;HATEOAS
电子村务是电子政务在农村的延伸和落地。电子政务在城市的发展已经基本成熟,但是在广大的农村地区这仍是一个亟待解决的问题。2016年,中央一号文件提出提高农村公共服务水平,创新和完善乡村治理机制,这指明了电子村务或农村电子政务的重要性和发展方向。而且,随着农村经济的发展和信息化水平的提高,我省很多农村地区尤其是珠三角的农村地区已经具备实现电子村务的基本条件。
目前,我国学者在电子村务的研究方面已经有一定积累,这些研究和实践主要分为两类:一类是针对电子村务内容或基本需求;一类是聚焦于电子村务系统和平台设计和实现。总的来说,电子村务的研究和实践主要存在以下问题:(1)没有以村民为核心,需求调研不足,从而造成系统实用性差、使用率低。(2)不适合目前移动互联网时代的要求;(3)系统难以扩展,一旦业务变更系统需要进行繁杂的重构,更没有考虑未来与其他系统的交互。
针对以上问题,本文提出基于REST架构的电子村务平台,该平台具备以下特点:(1)以广州市南沙区民兴村为研究对象,对村民和村委会的核心需求进行建模。(2)同时开发Web网页端和Android客户端,双端共享同一后台;(3)基于REST架构设计平台,服务端满足HATEOAS约束,使系统具备良好的扩展性、可维护性。这尤其适合于目前农村未成熟稳定的应用环境。
1.1REST架构简述
REST是在已有各种Web架构规范的基础上新增一部分新规范,从而形成的一种新的Web架构风格,通常也用REST架构指代REST架构风格。REST架构由HTTP设计者之一Roy Thomas Fielding博士提出,它包含了客户端-服务器、无状态、缓存、统一接口、分层系统五个必要架构约束和按需代码一个可选架构约束。REST的出现是为了降低Web应用开发的复杂性,提高系统的可伸缩性和可维护性。
1.2Web服务成熟度模型
2008年,Leonard Richardson提出一个Web服务成熟度模型,该模型对于Web服务成熟度层级的划分是基于Web服务对于Web技术的支持程度,它描述了四个层级的Web服务,分别从第0层到第3层。第0层服务的特点是HTTP只是作为传输协议,基于SOAP 的Web服务就属于第0层类型的服务。第1层服务引入资源的概念,使用符合REST风格的URI来标识系统中的资源。第2层服务在第1层的基础上,使用HTTP方法来作为操作资源的统一接口,通常是HTTP get、post、put、delete四个方法。同时,属于该层的服务还使用不同的状态码(Status Code)来区别服务器响应的结果。第3层是目前Web服务设计的最理想状态。这一层级的服务应用HATEOAS(Hypermedia as the Engine of Application State)设计模式,即超媒体作为应用状态引擎。HATEOAS的运用使得客户端和服务器完全解耦,打破了客户端和服务器之间严格的契约,使得客户端更加智能和自适应,也让服务的演化和更新更加简单方便。
1.3REST开发框架
在众多REST开发框架中,主要分为两类:一类是按照JAX-RS(Java API for RESTful Web Services)规范的标准实现的,例如Jersey、Apache CXF和Apache Wink;另一类是按照自定义方式实现的。例如Spring HATEOAS、Restlet和Django等。
Spring HATEOAS是Spring按照HATEOAS原则设计的,它提供了与Spring MVC共同开发时方便创建REST表述的API,它能帮助开发者更快地开发最高成熟度的REST服务。由于Spring为各种业务领域和技术场景提供了一站式的解决方案,并与众多开源框架能够方便整合。因此,鉴于开发的一致性、简单性和服务的兼容性、可维护性,本平台采用Spring进行服务端的开发。
经过对民兴村村民和村委会的需求调研,确定平台的目标是提高村委会村务管理效率,为村民提供一站式的公共服务,村民可以通过PC或手机就可以足不出户地办理业务和获取资讯。具体地说,平台需求主要包括以下:
(1)对于村民而言,他们可以通过网页或手机在线办理户籍证明、申请报建、医保社保等业务,还可以浏览村委会公开的各类信息和新闻,此外,还可以向村委会进行意见反馈。
(2)对于村委会而言,他们可以通过平台为村民提供户籍证明、报建申请、医保社保等各类业务的在线办理。此外,村委会可以通过平台发布财务,计生、宣传、农业等各类信息和热点新闻,以及推送重要的信息到村民手机。
(3)村委会可以发布公众投票,从而村民通过PC和手机可以进行无记名投票。
平台的用例模型如图1所示。
图1 用例模型
3.1总体架构设计
平台的客户端包括PC(浏览器)和Android手机端,两类客户端共享同一个服务端,使用HTTP的方法进行资源操作的请求。由于REST的应用,请求将方法信息和作用域信息封装在URI里。服务端的构建采用分层体系。平台的总体架构如图2所示。
图2 总体架构
3.2基于REST的服务端设计
(1)数据集规划。平台主要有以下数据:用户账户、医保账户、社保账户、户籍证明、报建申请、村民反馈、村委信息、热点新闻、商业合同、投票等。
(2)资源规划。根据需求信息和数据集,设计平台的资源,并考虑客户端在交互过程中可能的资源转移过程,从而设计状态转移图。表1列出电子村务平台的资源。图3展示了办理户籍证明的资源状态转移的过程。
(3)接口的设计。基于REST架构的Web服务采用HTTP的统一接口进行资源操作。然而,对于每一个资源并不一定需要实现所有的HTTP方法。一般根据资源状态转移图,将每一次引起资源状态转移的事件抽象为一次资源操作。
(4)资源的表述。资源的状态在客户端和服务端之间交互时可以采用多种格式进行表述。在本平台中,由于网页前端采用了AJAX技术以及Android客户端的使用,因此统一采用JSON作为资源表述格式。
(5)服务端返回状态码设计。REST风格的Web服务需要使用不同状态码来区分响应结果,从而客户端可以通过状态码清晰地了解响应的含义。例如,客户端可能会创建一个已经存在的村民账户,从服务角度来说,这是修改已有账户却未提供任何授权信息的请求,这时服务端应该返回状态码409(冲突),而不是表示未授权的状态码401。这样客户端才能不被响应代码困惑。
表1 电子村务平台资源
图3 办理户籍证明资源状态转移过程
4.1电子村务平台服务端的实现
构建HATEOAS约束的REST服务,需要在服务端的响应表述中添加动态链接信息,从而客户端可以通过链接来发现可以触发状态转换的动作。而Spring HATEOAS则提供了简便的机制来实现。将资源表述类继承ResourceSupport类,可以方便地添加资源链接以及关系,这是通过Link对象实现的,它由rel(关系)属性和href(超链接)属性构成。
Spring MVC中的控制器在创建单个资源的链接时都是通过硬编码的方式实现的,这是不符合HATEOAS约束的。Spring HATEOAS通过ControllerLinkBuilder类的linkTo方法,先指定Spring MVC控制器的Java类,再通过slash方法来找到下一级的路径,最后生成具有rel属性值(如self)的链接。在使用Controller-LinkBuilder生成链接时,除了可以使用控制器类之外,还可以通过methodOn方法来使用控制器类中包含的方法。以村民资源表述类VillagerResource为例,表2给出了该类的代码。
除了通过Spring MVC的控制器来创建资源链接,Spring HATEOAS还提供了从模型类中创建链接的机制。通过在控制器类中添加@ExposesResourceFor注解声明需要暴露的模型类,如使用@ExposesResourceFor (Villager.class)即可暴露村民类。之后需要在Spring MVC的配置类中添加@EnableEntityLinks注解来启用实体链接(EntityLinks)功能。在需要创建链接的控制器中,通过依赖注入的方式添加对EntityLinks的引用,就可以使用EntityLinks的linkToSingleResource方法创建指向单个资源的链接。
表2 VillagerResource类
Rel("villager");this.add(linkTo(methodOn(VillagerRestController.class,userId).readVillager(userId).withSelfRel();}
4.2电子村务平台客户端的实现
电子村务平台的客户端有网页端和Android终端。其中,网页端采用Bootstrap和jQuery框架进行开发。Bootstrap的使用可以让网页适配不同屏幕大小的终端设备。客户端的一些运行界面如图4和图5所示。
电子村务平台以村民为核心进行需求建模,保证平台的实用性。平台采用REST式的Web服务架构,使不同客户端可以共享同一后台。平台服务的设计满足HATEOAS约束,使得客户端和服务端之间变成松耦合,业务和逻辑相关的变化将被限制在服务端内,从而简化客户端开发和演化,提高平台的扩展性、可维护性。这为目前农村不成熟的应用场景提供了良好的解决方案。
图4 户籍证明办理网页端界面
图5 户籍证明办理Android手机端界面
参考文献:
[1]卢义.重庆市荣昌县农村电子政务研究[D].重庆大学,2014.
[2]王凤云.电子村务系统的设计与开发[J].山东农业科学,2014,46(5):18-25.
[3]王宏禹.新农村电子村务的构建[J].江西农业大学学报(社会科学版),2009,8(2):72-75.
[4]夏露.农村电子政务的功能与建设内容[J].湖北农业科学,2013,52(21):5354-5357.
[5]杨倩茹,黄梦醒,万兵.基于云计算的农村电子政务架构研究[J].计算机与数字工程,2011,39(10):25-29.
[6]周海琼.新农村电子政务系统构建的研究[D].华中师范大学,2008.
Electronic village not only helps narrow digital gap between urban and rural area,but also benefits the problem-solving of agriculture,countryside and peasants.The proposed E-village platform based on REST models requirements of villagers live in Minxing Village,Guangzhou City.Web service satisfying HATEOAS constraint is adopted to design the server side of platform.In this way,backend can be shared by web page and android,and it breaks the strict contract between client and server,which makes platform more extensible and maintainable.
Keywords:
REST;Electronic Village;Web Service;HATEOAS
Design and Implementation of E-village Platform Based on REST
LI Bin-feng,CHEN Jian-guo,ZHU Ming-min
(College of Mathematics and Informatics,South China Agricultural University,Guangzhou 510642)
Abstract:
电子村务有利于缩小城乡数字鸿沟,帮助解决三农问题。基于REST架构的电子村务平台对广州市民兴村的需求进行建模。电子村务平台基于REST架构,服务端的设计满足HATEOAS约束,不仅使网页端和Android端可以共享同一后台,还打破客户端和服务端之间严格的契约,从而使平台具备良好的扩展性、可维护性。
文章编号:1007-1423(2016)15-0061-05
DOI:10.3969/j.issn.1007-1423.2016.15.015
作者简介:
李彬峰(1991-),男,广东梅州人,硕士研究生,中级工程师,研究方向为管理信息系统
陈建国(1963-),男(汉族),湖南岳阳人,教授,研究方向为工业工程
朱明敏(1992-)年11月,男,安徽安庆人,硕士研究生,研究方向为工业工程
收稿日期:2016-03-27修稿日期:2016-05-10