首页 > 范文大全 > 正文

基于REST规范的内容管理系统数据服务接口构建研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于REST规范的内容管理系统数据服务接口构建研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:基于SOA(面向服务)的体系结构设计在当前的互联网应用中变得越来越流行,而与SOA相关的数

据服务接

>> 基于WCF数据服务的大学教务管理系统开放平台的构建 基于rest的天气服务接口实现研究 基于内容管理的档案信息服务 基于开源框架的内容管理系统 基于.NET的教务信息内容管理系统的研究与实现 基于EIP的企业内容管理系统的研究与实现 基于OpenCms网站内容管理系统的比较研究 基于PHP的小型内容管理系统研究与开发 基于JTBC开发蒙古文网站内容管理系统的研究 移动学习内容管理系统的研究与设计 项目内容管理系统EPFM的应用研究 内容管理系统的研究与比较 选择合适的内容管理系统 应用J2EE构建网站内容管理系统的研究与分析 基于REST服务的电力调度数据互联技术研究 网站内容管理系统数据迁移模型的设计与实现 基于数据生命周期的图书馆科学数据服务研究 文献内容管理系统 IBM大型数据服务器管理系统的设计与实现 基于模板技术的网站内容管理系统的设计与实现分析 常见问题解答 当前所在位置:?fromId=21305&from=rdtself有关于SOA的介绍。

大多数SOA的体系结构设计都是基于Web Service技术的,包括RMI、SOAP、CORBA和EJB等。虽然它们

可以构建一个SOA系统,但是在技术上都存在不足:

(1)开发、维护复杂。基于以上技术构建的Web Service接口,有些技术需要了解复杂的开发协议和

规范;有些需要学习新的开发环境,这些都会导致开发和维护成本的上升。

(2)客户端便用不方便。由于以上技术大都有自己的协议和规范,这使得客户端需要了解服务

器端所使用的协议和规范;同时,当基于客户端存根类访问服务时,服务升级变得不方便,需要所

有使用该Web Service的客户端完成存根类的升级。

(3)浏览器富客户端难于应用。随着互联网应用的发展,前端浏览器的应用越来越强调用户的

交互体验,互联网应用也就变得越来越富客户端,很多时候都需要在浏览器端直接调用Web Service接口。

而采用以上技术的客户端调用要么是只限定在服务器上,要么是向浏览器传递的信息量过多,不利

于互联网传输。

而基于REST规范设计的Web Service接口,很好地弥补了以上技术的不足:

(1)基于HTTP协议。基于REST的Web Service接口采用HTTP协议,使用起来非常简单,因为所有的

服务器接口都是一个URI资源,开发起来相当方便,维护成本也相当的低。

(2)客户端使用方便。由于是基于HTTP协议,所以客户端只要象访问一个互联网资源一样访问一个

基于REST规范的Web Service接口,不需要了解任何其它复杂协议和规范,也不需要通过存根类去访问它

们。

(3)适应于富浏览器应用。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),

是一种创建交互式网页应用的网页开发技术。基于富浏览器的应用都是使用AJAX来调用后台Web

Service服务的。而基于REST规范的Web Service接口可以返回一种全新的数据格式:JSON。JSON

(JavaScript Object Notation) 是一种轻量级的数据交换格式,是JavaScript的对象和数组。所以客户

端通过AJAX调用基于REST的Web Service接口,不需要做任何数据解析便可以在应用中直接使用返回的JSON

数据。

1 REST服务规范

REST (Representation State Transfer,表述性状态转移) 指的是一组架构约束条件和原则,

满足这些约束条件和原则的应用程序或设计就是RESTful。REST规范主要涉及以下内容:

(1) 资源。互联网上所有的内容都可以看作一个资源,每个资源都可以为它们定义唯一一个ID,

即资源标识符URI(Uniform Resource Identifier),比如某电子商务网站上的一份订单,可能会拥有以

下形式的资源标识符:http://www.example*.com/orders/1234234,该订单的资源标识符将会在整个互联

网上唯一。

(2) 超媒体。超媒体被当作应用状态引擎(Hypermedia as the engine of application state),也

就是链接的思想。任何情况下,使用链接指引被标识的资源。比如上面订单的例子中,订单资

源的输出内容包括顾客的信息,该顾客实际上是一种资源,那么在订单的输出中就需要包含该顾客

资源的链接。当客户端获得某一个订单资源时,也能方便地获得该订单的顾客资源。

(3) 资源操作。在对资源进行操作时最常见的是增加、删除、修改和查询操作。HTTP协议定义了一

系列的方法,最常见的是GET和POST方法,还有PUT、DELETE等方法。REST规范规定POST方法用来增加资

源;DELETE方法用来删除资源;PUT方法用于更新资源;GET方法用来查询资源。

(4) 多重表述。资源可以有多重表达形式,它可以是XML格式,也可以是JSON格式,通过设置HTTP头

信息,客户端可以指定某一资源的表达形式。例如下列HTTP头信息指定要获得订单的XML格式:

GET /orders/2013023112342142 HTTP/1.1

Host: www.example*.com

Accept: text/xml

如果要获得JSON格式,只需要将Accept头内容改成text/json

(5)无状态性。REST规定客户端与服务器之间是无状态的(Statelessness)。这种无状态是指

服务器端不应当保留客户端的状态,这样当服务器出现问题,客户端不需要依赖于这台服务器,可以直

接切换到另一台服务器,这种设计提高了系统的可伸缩性。当然,无状态并不是说系统不能保留状

态信息,状态信息可以保留在客户端及资源本身。

2 设计与实现

本节将从技术和业务上说明如何构建基于REST规范的数据服务接口。当前,支持REST

的Java框架有很多,比较流行的有Restlet、Cetia4、Apache Axis2和Jersey,而Spring框架

在版本3后也开始支持REST了。由于本系统较早支持REST服务接口,所以选择了Jersey框架,Jersey

框架是JAX-RS(JSR 311)的参考实现。

2.1 技术架构

图1是该系统的技术架构。使用该数据服务的客户端可以是浏览器,也可以是手机或其它服务器端应用

程序;客户端在访问数据服务时,不是直接访问REST数据服务,而是访问Varnish缓存服务器,

Varnish缓存服务器可以很好地平衡用户访问请求,特别是在多用户、大并况下,Varnish缓存服务

器可以大大减少后台数据服务器的压力;REST数据服务是真正的数据服务提供者,它访问CMS内容

管理系统数据库,并向外提供数据服务。可以认为REST数据服务是内容管理系统的消费者,而内容管

理系统是数据库的生产者,编辑人员能通过内容管理系统管理文章、新闻,REST数据服务为外面的客户端

应用程序提供数据服务。

在构建REST数据服务时,使用Jersey框架建立面向REST规范的数据服务,同时使用Spring框架支

持整个系统的IOC/AOP,让整个系统的设计及代码看起来更加简洁,易于管理;在数据访问层方面,该

设计采用了IBatis框架以达到ORM,消除Java对象与JDBC数据集之间的数据转换;对于一些不是经常变动的

基础元数据访问,比如作者信息,REST数据服务层采用了ECache缓存框架,当集成了ECache后,在

需要使用缓存的地方,只要使用Java标记Annotation就可以了。这里不需要写任何代码就可以对任何一个接

口的输出加上缓存支持。

2.2 数据服务接口需求分析

内容管理系统是提供编辑人员编辑并发表文章的系统,主要管理三类内容:编辑人员信息、文章关

键字信息及的文章。这些内容需要以Web Service的形式向外提供数据接口,供其它应用程序使用。

由于当前系统的数据服务接口主要为外部应用程序提供数据服务,所以都只提供GET方法。

外部应用程序可能是基于Web的B/S应用,也可能是一般的C/S应用,甚至仅仅是一个中间件。各个应

用程序在处理不同的数据类型时优势也不同。例如,如果是基于AJAX调用的B/S应用程序,处理JSON格

式数据将会很方便;而XML格式是几乎所有编程语言都能支持的一种数据格式,甚至有些中间件

或应用程序可能只支持XML数据格式,所以在设计数据服务器接口时应当至少支持两种格式:JSON和XML

提供一个稳定的对外数据服务对于内容管理系统来说非常重要,这种稳定性并不仅仅是指系统的性

能及可用性,还体现在对外接口稳定性上,也就是说对外接口的访问方式不会经常改动。当然,这种稳定

性是相对的,在设计对外数据服务接口时需要从超媒体的角度出发,使得数据访问者

能够通过某一入口便能找到相应的资源,这样即使资源的访问改变时,外部应用程序也不需要做

什么改变,数据接口的访问形式变化对它来说是透明的。

数据服务接口在满足业务需求的情况下,需要满足3个设计要求:支持对资源的读操作、支持资

源的多重表述、支持超媒体。而基于REST规范设计的数据服务接口已经提供了实现这3个设计要求的技

术支持。

2.3 面向REST规范的资源设计

在设计内容管理系统的资源超媒体时,可以考虑从内容使用的角度出发,设想一个B/S网站需要使用该

内容管理系统的数据,它有一个应用场景如下:①它的首页需要显示指定时间范围内的文章列表、作

者列表及关键字列表;②当用户点击某一文章时,会进入显示该文章详细内容的网页,文章的详细内容

会显示该文章编辑人员的名字;当点击该编辑人员的名字时,会进入与该编辑人员相关的介绍网页;

③编辑人员介绍网页有一链接,当点击该链接时,会显示与该编辑人员相关的文章列表网页。

根据以上场景,设计出图2的面向REST规范的数据资源服务接口。从该图中可以得出两大信息:一

是系统已将资源分为两种类型,即索引资源和实体资源,索引资源其实是某一类型资源的列表,通过索

引资源可以访问到系统中的实体资源,而实体资源是真正的资源,对应于某一篇实实在在的文章或一名

作者;二是整个内容管理系统的资源都是互通的,没有处于孤岛中的资源,比如通过任何一

篇文档资源都可以访问到相应的关键字资源和作者资源,通过任何一个索引资源都能访问到所有的文档

资源,这就是对超媒体设计的支持。

在设计实体资源的URI时,将采用“http://www.sample*.com/{资源}/{关键字}”的形式,例如某一

特定文档资源的URI是http://www.sample*.com/articles/1,某一作者资源的URI是

http://www.sample*.com/editors/1,某一关键字的资源是http://www.sample*.com/keywords/1。

3 使用效果

该设计方案已经成功应用于一家全球性金融企业的内容管理系统,通过该内容管理系统,

可以看到证券分析人员和信息采编人员上市公司的各类信息,包括新闻、年报等;通过该方案设计的

服务接口对外提供数据服务。现在全球已有30多个国家的金融网站通过该接口获得上市公司的信息,

同时有数十种手机客户端应用程序在使用该接口,为不同的用户群提供信息服务。图4是使用该数据服务器

接口的一个网站界面。

由于该数据服务接口是无状态的,所以在全球设置了不同的数据中心,以便向不同的站点提供最好的

性能服务。该数据服务接口自上线两年多来,一直处于非常稳定的运行状态,向外提供了7×24小时连续

不间断的可用,同时没有出现性能压力问题。

4 结语

本文提出的基于REST规范面向SOA的服务接口设计非常适合内容管理系统,特别是基于B/S的互联网用,使得客户端使用这些服务变得非常简单,而且所有的编程语言都可以方便使用,不

需要了解SOAP、EJB、CORBA等复杂的交互协议。基于REST规范的服务器接口设计面向SEO

(Search Engine Optimization)搜索引擎优化,有利于网站的推广。

由于内容管理系统的客户端非常多,对于它提供的数据服务器接口性能及稳定性有很高的要求

,虽然Varnish服务器的建立使得该数据服务的性能有了很大的提升,但当客户端应用是Web时,由

于Varnish只是位于一个区域的服务器,当该数据服务被不同的地域浏览器访问时,仍然会出现性能问

题,所以该方案还需要解决的一个问题是数据服务的反向。当客户端访问Varnish之前,先访

问反向服务器,反向服务器后面是一系列分布在不同地域的Varnish服务器,反向服务器

将根据用户请求的来源决定访问哪一台Varnish服务器,具体的实现细节还有待进一步研究。

参考文献:

[1] PACKT PUBLISHING.RESTful web services cookbook:solutions for improving scalability and simplicity[EB/OL].Yahoo Press,2010.

[2] ROBERT DAIGNEAU.Service design patterns:fundamental design solutions for SOAP/WSDL and RESTful web services[J].Addison-Wesley Professional,2011.

[3] MARTIN J FOWLER.Patterns of enterprise application architecture[J].Addison-Wesley Professional,2002.

[4] BRUCE JACOB,SPENCER NG,DAVID WANG. Building scalable web sites:building,scaling,and optimizing the next generation of web applications[J].O'Reilly Media,2006.

[5] MARTIN L ABBOTT,MICHAEL T FISHER.The art of scalability:scalable web architecture,processes,and organizations for the modern enterprise[J].Addison-Wesley Professional,2009.