基于三层xml的服务统一描述
2009-09-02石少敏
石少敏
【摘要】 文章使用根据 XML 语法编写的 XML 文档,借鉴WSDL文档的定义,讨论了服务描述的消息格式,提出了一种新的服务描述模型。
【关键词】 服务自描述;XML;三层xml模型
自描述是服务的基本特征。通过自描述,作为开放网络构件的服务以编程语言无关的方式对外公布其调用接口和其他相关特征。通过服务描述,服务屏蔽了其实现细节,使服务提供者和服务消费者能以一种松耦合的方式协作。对服务最基本的描述是接口描述,服务消费者只有获得接口描述才能向服务发送正确的调用信息;服务的通信协议、访问地址、发送给服务的消息格式约定也是访问服务之前必须获得的信息。
XML Web 服务基础结构是建立在通过基于 XML 的消息进行通信的基础上,这些消息符合已发布的服务描述。服务描述使用 WSDL语言根据 XML 语法编写的 XML 文档,定义 XML Web 服务可以理解的消息格式。
Web Service技术使用wsdl文档对所提供的服务进行描述,发布后由用户识别并调用,完成服务的生命周期。Wsdl文档根据xml语法编写,同时也规定以基于 XML 的消息采用SOAP协议进行消息通信。
服务通过Web Service实现使用已成为发展趋势,但是,目前仍有大部分服务尚未完成到Web Service的转换。而之间的通信,却必须进行。为统一服务的描述,本文基于xml技术,结合wsdl文档描述机制提出三层xml服务统一描述模型来完成服务的描述。
一、三层xml服务统一描述模型架构及原理
根据服务描述的3C模型和web service技术的wsdl文档描述服务的规范,三层xml服务统一描述模型提出的三层xml是指:功能层、表示层、传输层。模型如图1所示。
在模型中,功能层XML 文件,对服务提供者所能提供的服务进行功能性描述,主要是提供的接口的描述,由此完成服务的功能的界定。同时描述了包括传输格式、类型定义,访问该服务的绑定信息。
表示层XML文件,规定功能层描述的接口调用如何在网络协议上表示的问题,支持四种表示方案,即Web服务的soap形式、xml表示、txt表示、二进制表示。通过对几种传输形式的不同规定,达到传输内容的统一描述,传送的信息和内容可屏蔽传输内容表示的异同,满足不同的传送条件和要求。即无论是二进制、txt文本还是XML文档的传输格式,系统都可以通过对表示层的封装完成发送与接收工作。表示层xml,根据具体的传输内容设定相应的表示Schema,调用某个服务接口时,首先将调用装载成规定的xml格式,进一步装载到传输层的数据域中传输。表示层若采用TXT格式,则可用一种正规式来描述,这样的正规式也用一个xml文档来描述。表示层若采用二进制格式,也可用xml描述,此时在传输时则涉及对象序列化与反序列化问题。
传输层XML文件对传输过程中所使用的传输协议进行信息描述,例如端口,位置,版本,URL等。
二、模型介绍
功能层的描述,对wsdl进行适当的改造,利用其类型系统和数据类型定义机制,改造其操作描述机制,使其能允许多参数描述,而不像web service的wsdl,仅允许操作最多有两个参数。同时考虑非web服务的绑定问题,将wsdl中的技术绑定部分也进行改造,使其既能够描述web服务的绑定信息,也能对非web服务的绑定信息进行定义。
元素详细介绍如下:
Interfaces
Interfaces是一个SPAgent所能提供的所有服务的集合,即Agent,包含多个Interface;每一个Interface代表一个子服务,包含多个Operation;多个Operation共同实现一个子服务。Operation中Parameter是Operation在执行时所接收到的消息参数和所产生的消息参数,包括:参数名即消息名、消息类型(input、output)。
BindInof
BindInfo元素定义了两种类型的服务代理,以应对不同形式的服务来源。当来源是标准web服务时,通过WSBindType元素具体指定对web服务的绑定信息,包括绑定协议类型,消息风格,编码格式等。当来源是一般的服务时,则由CommonBindType元素指定服务的远程访问信息,包括访问方式,可以是RMI、RPC等,访问地址,访问端口,远程目标对象。
Types
是自定义的复杂类型。在具体的传输过程中,基本类型String、int等有可能不足以表达某些信息的类型,必须根据第三方服务所提供的信息进行类型的重定义。比如,对于“书”,不能直接将它定义为String类型,而有可能是“教学辅导书”、“小说”、“畅销书”等类型。则,教学辅导书是一个需要自定义的复杂类型,小说、畅销书等也是。
TransFormat
TransFormat是传输格式,是直接从第三方服务确定而得到的,有四种:xml、wsdl、txt、二进制形式。在序列化与反序列化的时候需要根据不同的传输格式作不同的工作。由它来决定对所接收到的前台数据如何序列化与反序列化。
对于表示层,无论其采用哪种表示形式,总体上是采用xml描述的。
在表示层设计了元素Messages。
Messages
表示层的Messages元素包括了多个Message和CharSet属性,每个Message根据功能层TransFormat的具体值的不同对功能层中的Message的传输内容进行不同的传输格式约束,一个Message包含一个TransContent。它是序列化与反序列化工作的基础。Charset属性规定了数据表示所使用的字符集。
三、实例应用
服务描述机制必须考虑服务提供商提供服务的异构性,以达到生成工作的通用性;同时,需考虑远程访问服务或代理的绑定信息;并且对服务提供商和服务代理之间传输内容的格式也需考虑。此外,服务提供商和服务代理之间的通信协议也必须考虑多种情况,以确保不同的终端用户在不同环境下同时执行同一服务提供商提供的业务。利用三层xml服务统一描述模型,可解决这些问题。
首先,功能层通过Interfaces、Operation、元素描述了服务的功能,又通过BindInfo元素定义了将要生成的服务代理的服务来源的类型,和针对不同类型的不同的绑定信息。无论服务提供商提供哪种形式的服务,都需完成功能层xml文档的描述。
而对于服务提供商和服务代理之间传输内容的格式,则通过表示层Message元素进行传输约定。从前述可知,表示层支持四种表示方案,都统一于表示层的xml描述中。
最后,对于通信问题,三层xml服务统一描述模型的传输层支持现有可能的几种传输协议,系统可根据此封装不同的传输代理,满足使用各种传输协议的服务提供商。
针对现存多种形式的服务而描述不统一的现状,文章在服务描述元模型3C模型的基础上,结合了web service技术使用wsdl描述web服务的优势,对相关部分进行改造,提出三层xml服务统一描述模型,完成了异构服务的统一描述。并详细介绍了三层每层的元素设置、功能。最后,以实际项目为应用平台,验证了模型的正确性和可行性。
参考文献
[1]Hiroshi Maruyama,Kent Tamura,Naohiko Uramoto.XML and Java Developing Web Applications[M].Addison-Wesley,August 1999
[2]和应民,叶子平.利用Java技术实现基于XML的Web服务.成都信息工程学院学报
[3]王法玉,薛彦兵.用基于XML的Web Service技术实现资源共享.天津理工大学学报
[4]Ed Tittel,Norbert Mikula,Ramesh Chandak.XML For DUMMIES [M].IDG BOOKS Worldwide,Inc,1999.
[5]宋晓梁,刘东生,许满武.中间件及其在三层客户机/服务器模型中的应用[N].计算机应用