钟锋
摘 要: WSRF和WSN的Web服务规范,给解决有状态的Web服务问题提供了新的方法。介绍了体检人数控制中间件的背景及需求,然后基于有状态的Web服务设计了体检人数控制中间件SOA框架,并对其有状态的资源封装方法和状态资源改变时的消息通知机制等关键技术进行详细的阐述,最后通过Globus Toolkit 4.0實现了中间件,在体检预约平台上取得了良好的应用效果。
关键词: Web服务资源框架; Web服务通知; 体检; 中间件
中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2017)04-25-04
Abstract: The framework of WSRF(Web Services Resource Framework)and WSN(Web Services Notification)provides the Web service with the stateful resource. In this paper, the physical examination control middleware is presented and the stateful Web service is introduced to the middleware framework. The stateful resource encapsulation method and the notification mechanism are subscribed. The middleware is implemented by GT4 (Globus Toolkit 4.0), and the application in the physical examination system shows that the middleware is applicable.
Key words: WSRF; Web Services Notification; physical examination; middlewar
0 引言
基于HTTP的传统Web服务是不包含服务本身的状态信息。Web服务的客户端根据WSDL描述,一次性调用Web服务让其执行并得到返回结果,完成Web服务执行的过程。但在实际的业务流程中,例如体检预约平台中的人数控制服务,都是需要有状态信息的Web服务。业务上对有状态服务的需求,对传统Web程序的复杂性和稳定性都提出的挑战。网格和Web服务的结合,WSRF和WSN的Web服务规范,给解决有状态的Web服务的问题提供了新方法。
本文主要介绍体检人数控制中间件的背景和需求;介绍基于有状态资源服务的中间件框架;给出中间件框架中有状态资源封装和消息通知机制的实现;阐述了利用GT4对系统关键部分的实现;最后总结并作出展望。
1 体检人数控制中间件
体检预约平台主要为各大体检中心提供平台入驻、线上预约和个性化体检功能,帮助体检中心从传统的体检走向互联网体检。
体检预约平台为体检中心实现一个非常重要的功能就是人数控制。传统的体检中心都是体检人到现场才会登记体检,无法预测和控制今天会来多少客户体检,很容易造成体检中心资源浪费或超负荷运转。通过体检平台预约则可以让体检中心自己实现名额的限制,名额用完了用户便无法进行在线下单预约体检,有效提高了体检中心资源的利用率。此外,体检预约平台还会为第三方健康管理中心提供体检中心剩余名额信息,有效拓展了传统体检中心检前运营的能力。
体检预约平台基于SOA架构,主要通过Web Service实现,而体检人数控制中间件是体检预约平台对体检中心人数控制的一个核心中间件。要求其既能够很好的控制体检中心的体检名额,又能够同步为第三方健康管理中心提供名额信息。
2 体检人数控制中间件架构
基于体检预约平台现有体系架构和对人数控制中间件的需求,我们设计了基于SOA的有状态的Web服务框架。主要有三层构成:最底层的体检中心名额资源层、中间状态服务管理层和顶层的人数控制门户API及短信订阅功能。
2.1 有状态资源层
传统的Web服务是无状态信息的。在有状态服务的管理中,我们将“状态”本身也看成是实体,也就是资源的一种,而Web服务则可以对应多种状态的资源。当每次调用Web服务的时候,就可以找到特定状态的资源,从而对其保存的状态信息进行操作。资源可以有不同的状态信息,而一个Web服务可以对应多个资源。把状态作为有状态资源来建模并且通过一个隐含的资源模式使Web服务之间的关系规范化。
2.2 服务管理层
服务管理层有三部分构成:Web服务资源框架(WS-ResourceFramework,WSRF)、Web服务消息通知(WS-Notification,WSN)和Web服务分布式管理(WS-DistributedManagement )[1]。
WSRF定义了使用Web服务来访问有状态资源的一系列规范。它包括:Web服务资源特性(WS-ResourceProperties)、Web服务资源生命周期(WS-ResourceLifetime)、Web服务基本故障(WS-
BaseFaults)和Web服务服务组(WS-ServiceGroup)规范。这些新规范的目的是虽然Web服务实现在它们交互的过程中并不维护状态信息,但是它们的交互必须经常性地为状态操作考虑。也就是说,数据的值通过Web服务交互得以持久化,并且作为Web服务交互的结果而保存[3]。
WSN制定了在Web服务环境中创建事件驱动系统的标准流程。它包括了:Web服务基本通知(WS-BaseNotification),解决了有状态资源服务通知的基本功能,可以实现通知和订阅且讲他们融合到了一起;Web服务通知主题(WS-Topics),规范了用户订阅通知的主题的定义;Web服务经纪人通知(WS-BrokeredNotification),可以实现对不能管理订阅的实体通过一个单独的NotificationBroker来发布这些消息。
WSDM实现了定义了如何表示和访问作为 Web 服务的资源的可管理性接口,让Web 服务作为平台来提供基本的分布式运算功能性、互操作性,松耦合以及独立实现能力[2]。
2.3 人数控制API和短信订阅
人数控制中间件最上层提供2种服务,一种是短信订阅,通过短信订阅的方式,平台可以通过中间件实时向用户推送体检中心剩余名额信息;第二种是通过程序API,也是通过订阅的方式,让第三方平台程序能够随时掌握订阅的体检中心剩余名额信息。
3 有状态的资源服务关键技术
3.1 有状态的人数控制资源封装
在人数控制中间件中,有状态的体检资源包括体检中心id、体检中心名称、项目类别、项目名称、项目介绍、项目价格、剩余名额等资源属性。这些属性订单值定义了资源的状态,更改了属性的值变更改了资源状态,通过这些属性来反应出当前某体检中心某项目剩余名额的资源状态。
在系统中,我们可以把有状态的资源表示成一个由其属性构成的XML文档,该文档称为资源属性文档,体检中心项目剩余名额的资源文档如图2所示。有状态的资源在WSRF机制中通过WS-Addressing来实现。WS-Addressing提供了一种方式来指定资源位置的信息,而不只是一个统一的资源标识符。WS-Addressing引入了端点引用(EndpoingReference)的概念,端點引用包含了地址组件和引用属性组件两个部分,地址组件说明了Web服务的位置,而引用属性组件则包含了有状态的资源标识符。包含了有状态的资源标识符的端点引用是有资格的端点引用。
在系统中,我们通过工厂模式来实现有创建的资源。当客户端想要创建有状态的资源时,通过工厂服务(Factory Service)来创建有状态的资源。资源在创建的时候,会产生各自单独的标识符,并通过工厂服务返回包含了资源标识符的端点引用。
当客服端要访问某个有状态的资源实例的时候,他所发送的资源请求在SOAP的信息投中必须必须包含这个有装改的资源标识符。被访问的Web服务从SOAP中解析有状态的资源标识符,通过标志符号来找到状态,实现对有状态资源的访问。
对有状态资源生命周期的管理,可以通过立刻销毁和预定销毁两种方式。
3.2 通知机制的实现
通过WSRF机制来实现前端对有状态资源的访问并修改其属性,通过WSN机制来实现让客户端随时收到有状态资源属性状态改变的通知[4]。
在通知机制的选择上,本系统采用了发布/订阅消息交换模式。发布/订阅模式是在松耦合系统中采用一种消息通信方法。在该模式中,生产者实体负责发布信息给消费者实体,消费者实体对于这些信息指定自己的订阅。当生产者实体发生该主题的任何变化、事件和情况时,消费者实体都希望能够得到通知。发布/订阅模式为服务生产者和消费者之间建立了惟一的关联关系,他们之间的消息交换是以动态通知的形式完成的。
对于本系统,首先用户将通过主题来订阅其感兴趣的资源,并将订阅的信息发送给消息生产者,消息生产者在收到消息后会根据主题来解析订阅信息,并修改有状态资源的订阅属性,会返回一个信息说明是否订阅成功。消息生产者是维护有状态资源的状态服务,当资源的属性更新时,消息生产者根据订阅信息将时间通知给订阅者。为了使用户能够更改和删除订阅信息,订阅信息的处理还包括了订阅信息的更改和退订功能。更改和退订的功能同样也是通过生产者概念有状态资源的订阅属性来实现完成。
4 中间件关键部分实现
4.1 GT4环境准备
本系统采用J2EE开发环境。使用Globus Toolkit(GT) WS Core开发Web服务。Globus是工程计算领域广泛接受的网格技术解决方案。支持网格和网格应用的软件库。该工具包解决了安全、信息发现、资源管理、数据管理、通信、错误监测以及可移植等问题[5]。
Globus Toolkit是一个兼容WSRF的软件组件集,开发人员可以利用它们来构建分布式系统。GT4提供了OGSA所需要的很多服务。由于Globus Alliance在网格和分布式领域方而有丰富经验,所以这个工具包被广泛使用。Globus Toolkit 4.0对一组Web服务进行打包,这些服务提供了一个面向服务的基础设施。GT4最大的改进在于对WSRF和WSN规范的实现,从而可以对建立有状态资源访问的Web服务时,以通用的标准来实现。
4.2 关键功能实现
在有状态资源服务的实现中,资源的创建和获取是通过Resource Home来实现。资源由Resource Home负责管理。服务通过Resource Home创建资源实例。资源创建后,会返回资源的标识;客户端对某个特定的资源进行操作也是通过Resource Home来获取的。
通过Resource Home创建资源方法的实现如下:
5 总结与展望
Web服务是构建面向服务体系结构的最佳实践,然而Web服务也有其自身存在的缺点。WSRF通过引入有状态资源来解决Web服务不能在多次调用之间维护状态的问题;WSN规范则制定了Web服务环境中创建通知服务的流程。本文在体检预约平台人数控制中间件的设计与开发中,对人数控制的Web服务采用了WSRF来实现状态资源的封装和WSN的消息通知和订阅机制,有效的解决了Web服务人数资源状态的问题,并在实际应用中取得了良好的效果。
参考文献(References):
[1] 贾雄.数值天气预报云计算环境关键技术研究与实现[D].国防科学技术大学,2011.
[2] 刘海,张卫民,张瞩喜,贾雄,廖蔚.满足原子事务与 QoS端对端约束的服务优化选择方法[J].通信学 报,2011.
[3] WSRF[EB/OL].http://www.cs.virginia.edu/~gsw2c/wsrf.net.html
[4] 张连荣.有状态通知服务在民航综合信息平台的设计与实现[D].南京航空航天大学硕士学位论文,2008.
[5] GSBT. Globus Service Build Tools [EB/OL] http://gsbt.sourceforge.net/content/view/14/31/