开篇:润墨网以专业的文秘视角,为您筛选了一篇基于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.