一种有状态的Web Services技术——WSRF

来源:互联网 发布:销售用什么软件 编辑:程序博客网 时间:2024/05/16 00:48

1。简介

        Web服务资源框架(Web Services Resource FrameworkWSRF),其实际上是一组Web Service规范。WSRF针对传统的Web Service技术无状态的特点,通过对Web Service规范的扩展,成为是一个在Web环境中设计处理有状态资源的规范,以便在提供Web Service服务的时候可以保留资源信息,并且提供持久数据的方式。

       WSRF引入WS-Resource来对Web Service服务上下文中的状态信息进行模型化的管理。一个WS-Resource可以被当作一个具有无状态消息处理器的Web服务,与有状态的资源的联合体。因此,可以简单地用公式(WS-Resource=Web Service + Resource)来理解WS-Resource的含义。

       自从引入有状态的WSRF以后,资源就可以被理解为任何的具有扩展的生命周期的实体(资源可能是一个内存中的数值,甚至是存储器中的一个文件等),并且可以通过Web Service来获得这些资源信息。

       WSRF作为一组Web Service规范,是由一系列处理细节的子部分组成的。这些子部分通常用于对WS-Resource管理,以下对五个子部分进行简单描述。

       1WS资源属性(WS-ResourceProperties)

WS资源属性指定了同WS-Resource中定义的属性进行交互的实际方式。一个WS-Resource通常包含多种属性,例如一个文件资源可以包含文件名、文件大小和文件描述三个属性。

2WS资源生命周期(WS-ResourceLifetime)

WS资源生命周期定义了如何来管理和销毁WS-Resource的生命周期。资源没有永恒的生命周期,它随着服务的开始而创建,停止服务后会销毁它。

3WS服务组(WS-ServiceGroup)

WS服务组指定了如何来聚合或分组WS-资源和Web Service

4WS基本错误(WS-BaseFaults)

WS-基本错误定义了被WSRF服务抛出的SOAP格式的错误。

5WS重用引用(WS_RenewableReference

       WS重用引用定义了一种机制用来更新已经无效的端点引用,其中端点引用代表一个特定的WS-Resource的地址。

       除了上述的五个WSRF的子规范,以下两个规范与WSRF密切相关。

1WS通知(WS_Notification

WS通知将基于主题的发布/订阅模式引入到Web Service。这个规范允许将Web Service配置成为一个通知(Notification)生产者,并且某个客户端成为通知(Notification)消费者。也就是说,当一个Web Service(或者WS-Resource)发生变化时,变化会被通知所有的订阅者。

       2WS地址(WS-Addressing

       WS地址规范提供了一种定址Web Service的机制,端点引用(EndpointReference)是WS地址规范的核心内容。

       综上所述,WSRF通过对相关规范的扩展,使Web Service成为一种可以处理有状态的资源的技术。Web Service技术作为一种面向服务(SOA)的技术,被广泛应用于网格服务设计,通过对Web Service扩展形成WSRF规范后,WSRF规范已成为编写网格服务程序的标准框架。WSRF不仅具被Web Service技术的平台无关性和可重用性,而且可以对资源信息进行有效的管理。

 

 2.WSRF服务程序的编写规范

       了解WSRF程序设计框架是编写网格服务程序的基础,通常编写WSRF服务程序需要经历五个阶段。

       1)使用WSDL定义服务接口

       服务接口用于向外部程序或用户提供访问服务的基本方法。在Web Service的术语中,服务接口通常被称为端口类型(port type),它用于告诉外部的用户哪些服务方法可以被用户调用。服务接口定义的服务方法通常使用特别的XML语言来表示,这种基于XML的语言被称为Web Service描述语言(Web Service Description LanguageWSDL)。因此,编写WSRF程序的第一个阶段,主要进行编写WSDL文档,以定义服务接口。

       举例来说,假设有个系统中的提供主机信息服务注册功能,需要记录各个集群中主控结点的主机名和IP信息,因此,需要实现添加主机的方法:void addHost(string host)。这个方法在WSDL文件当中部分地显示为如下所示的XML代码,其主要描述了方法名(addHost)、需要传递的消息(AddHostInputMessageAddHostOutputMessage),服务接口(ServiceRegisterPortType)等信息。

<types>

<!-- REQUESTS AND RESPONSES -->

<xsd:element name="addHost" type="xsd:string"/>

<xsd:element name="addResponse">  <xsd:complexType/>

</xsd:element>

</types>

<!-- MESSAGES -->

<message name="AddHostInputMessage">

<part name="parameters" element="tns:addHost"/> </message>

<message name="AddHostOutputMessage">

<part name="parameters" element="tns:addHostResponse"/> </message>

<!-- PORTTYPE -->

<portType name=" ServiceRegisterPortType"

wsdlpp:extends="wsrpw:GetResourceProperty"

wsrp:ResourceProperties="tns:HostResourceProperties">

<operation name="addHost">

<input message="tns:AddHostInputMessage"/>

<output message="tns:AddHostOutputMessage"/> </operation>

 

       2)编写程序实现服务

       第一个阶段定义了提供服务的接口,在第二个阶段需要实现服务接口的功能,并且编写相关的服务程序。WSRF程序设计框架基于Web Service技术,因此,可以使用多种语言实现服务程序

       服务程序至少包含两个类,第一个类用于描述服务,第二个类用于描述资源。描述资源的类需要包含资源属性信息,以及得到/设置(Getter/Setter)的资源属性方法。描述服务的类提供实现服务的方法。

       3)使用WSDD配置服务部署信息

       服务程序提供服务需要使用Web Service容器,只用将其部署到Web Service容器,外部的客户端程序才有可能访问服务程序。部署服务程序的一个关键阶段是编写一个称为部署描述(deployment descriptor)的文件,它用于告诉Web Service容器如何发布自己的Web Service服务。部署描述文件当中需要包含服务名(service name)、类名(className)、WSDL文件名等基本信息。

       4)使用Ant工具创建GAR文件

       这个阶段将前三个阶段产生的各种文件,例如WSDL文件、Java程序文件、WSDD文件等,进行绑定工作,最终形成一个网格归档(Grid ArchiveGAR)文件。网格归档文件是一个单独的文件,它包含Web Service容器进行部署和对外提供服务所需的各种文件和信息。

       创建GAR文件是一个非常复杂的过程,例如,需要对WSDL文件进行处理、创建和编译各种服务类等,使用Ant工具可以有效地完成这些过程。

       5)部署服务到Web Service容器

       第四个阶段会产生一个用于部署服务的归档文件,这个阶段将这个文件部署到Web Service容器

       相对于编写WSRF服务程序所需的五个步骤,其客户端程序的设计相对简单。只需依据服务URLserviceURL),构建端点引用(EndpointReference),然后根据端点引用获得服务接口(PortType)的实例,通过调用服务接口实例提供的方法。

    更详细的程序编写说明请参照:http://gdp.globus.org/gt4-tutorial/singlehtml/progtutorial_0.2.1.html

 

 

原创粉丝点击