基于WSDL的虚拟Web服务的实现

北京交通管理干部学院学报
第17卷第4期   Journal of B eijing C omm unications M anagem ent Institute for Executives2007年
基于W SDL的虚拟W eb服务的实现
李继哲
(计算机系)
[摘 要]描述了一个基于W SDL和M icrosoft.N et平台的虚拟W eb服务的实现,用正则表达式搜索指定输出字符串,同时,修改W SDL文档中的某些元素,为用户提供一个部署方便、响应速度快的W eb S ervice,使W eb Service的实现与维护更加简单。
[关键词]虚拟W eb服务;W SDL;正则表达式
[中图分类号]TP311.52  [文献标识码]B  [文章编号]1008-1976(2007)04-0042-03
  随着Internet的日渐成熟,H TTP、XM L、SOA P 等业界标准得到广泛应用,SOA即面向服务的体系结构的出现使得开放式的软件集成架构成为主流。W eb服务的体系结构是SOA的一种具体实现,同时也是分
布式应用中最简单的一种实现方式。W eb 服务取得成功的关键因素是基于以上W eb标准,与平台无关,无需为不同协议建立桥接程序,可以用任何语言开发,以W eb服务的形式公开组件非常容易,有利于重用现有资源。通常我们将W eb服务理解为可编程的程序逻辑单元,实际上W eb服务的提供也可以不通过编程来完成,即本文中所提到的虚拟W eb服务。所谓虚拟W eb服务的实现,是基于W SDL文档和普通文本就可以像标准的W eb服务一样提供数据服务,而不需要编程实现。
一、W SDL
W SDL(W eb Service D escrip tion L anguage) W eb服务的描述语言,基于XM L语法,定义了W eb 服务做什么,怎么做和查询的信息,根据W eb服务的接收和响应消息对该服务进行描述,也用于定位W eb服务,总之W SDL文档在服务提供者与消费者之间起到了契约的作用。正因为W SDL文档具有契约的功能,我们才可以通过修改该文档,使得普通文本文件也能提供简单的W eb服务。
1.W SDL的地位与功能
W SDL文档用于描述W eb服务提供的接口,即W eb服务的说明文档。通过W SDL,可描述W eb 服务的3个基本属性:
(1)服务做些什么———服务所提供的操作(方法);
(2)如何访问服务———和服务交互的数据格式以及必要协议;
(3)服务位于何处———协议相关的地址,如U RL。
当我们定位到所需的W eb服务时,能够正确使用W eb服务方法的前提是熟悉该服务的W SDL文档,该文档描述了服务的具体定位,服务所包含的方法,调用方法传递的消息,方法所使用的参数与返回值及其数据类型等。
2.正则表达式
正则表达式是用于字符串匹配的有效的工具,可以高效、灵活地处理文本,在给定的字符串中,寻与给定的正则表达式相匹配的部分。
和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求,将它应用到W SDL文档元素中,以搜索
收稿日期:2007-10-25
第4期李继哲:基于W SDL的虚拟W eb服务的实现43
数据文件中某些需要的部分并将这些部分的值作为客户端需要的数据返回。
一般的使用方法是指出输出元素的模式<pat2 tern="正则表达式"/>,需要注意的是,在标记文档中搜索特定字符串,标记类文档中的标记均使用一对尖括号括起,在正则表达式中需用实体引用表示尖括号,一般形式如下:
中国人的焦虑从哪里来<p refix:m atch nam e="item"p attern="<;元素名r>(.3)?</元素名>">
</p refix:m atch>
中间(.3)?部分可用其他要搜索的特定字符串模式替代。其中“.”匹配除换行符以外的任意字符,“3”指定它前边的内容可以连续重复出现多次以使整个表达式得到匹配,而“?”表示前面的内容可重复零次或一次。
3.W SDL的组成与编写
W SDL文档是基于XM L语法的,它的根元素是definitions,包含5个子元素types,m essage,portType, binding,serv ice。这些子元素以固定顺序出现,并相互间存在特定的引用关系。
这5个子元素的描述内容从字面意义上可以直接看出:types描述数据类型,定义了W eb服务使用的数据结构即服务方法中输入参数及返回值的数据类型,默认使用XSD定义的数据类型,如果没有需要描述的内容,可以为空。m essage描述消息,输入输出消息主体,与数据类型相关联。m essage 是SO
A P的基本通信元素。每个M essage可以有一个或多个Part,每个Part代表一个参数。portTyp e 描述操作类型,可描述一组操作,每个操作的名称,包含的输入输出部分,对于某个访问入口点类型所支持操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。binding描述绑定信息,将p ortType绑定到特定的通信协议上如soap,指定客户端与端口之间的绑定方式,操作的具体定义。service描述服务,服务的绑定方式,服务的具体位置等。
从服务的说明文档中就可以了解调用W eb服务方法的途径,从service元素定位W eb服务的url,到binding元素确定方法名称,再到typ es元素确定方法输入参数类型及返回值。W SDL文档可由服务项目自动生成,而作为虚拟服务,因为不存在真实的W eb服务项目,所以需要手动编写W SDL文档,这就要求编写人员非常熟悉W SDL文档的组成,及各元素的取值范围。
手动编写W SDL文档的关键在binding元素中修改访问协议,方法名称及指定输出格式,最后需要修改服务定位,service元素的address子元素,如: <htt p:address location="htt p:/// l"/>
通常W eb服务项目自动生成的W SDL文档定位到具体的服务页面,扩展名为.as m x,在虚拟W eb 服务中没有对应的实际项目,因此定位到提供数据的文本文件。
二、虚拟W eb服务的实现
虚拟的W eb服务,指和传统概念上的W eb服务不同,并不是具有编码的一段服务程序。可以只有简单的XM L文档就能提供W eb服务,更像是在文档中搜索指定模式的字符串,并将这些符合要求的数据作为返回值提供给客户端。7.22事件
1.数据文件
数据文件是用来提供w eb服务的,可以是XM L文档,也可以是H T M L文档,即包含标记的文档,在W SDL文档中添加正则表达式的目的是在这些标记文档中搜索特定的字符串,将相应的值返回。因此数据文件可以是格式良好的XM L文档或者能够正常显示的普通静态网页。如:
<?x m l version="1.0"encoding="utf-8"?>
<books>
  <book>
   <nam e>XM L W eb Service开发</nam e>
   <publisher>高等教育出版社</publisher>
  </book>
  <book>
洛阳师范学院学报
   <nam e>C#XM L入门经典</nam e>
   <publisher>清华大学出版社</publisher>
  </book>
44北京交通管理干部学院学报2007年
</books>
2.手动编写W SDL文档
上文中的XM L文件填充更多数据后可直接作为W eb服务向外提供,手动编写W SDL文档说明该服务的输出格式,使用协议等,虽然服务只有一个XM L文件。可根据一个简单的W SDL文档框架改写,因无需要说明的数据类型,types元素可以为空。其中主要改写binding元素,如:
 <b ind ing>
  <operation nam e="G et B ookN am e">
   <ou t pu t>语音播报
   <p refix:text>
   <p refix:m atch nam e="listofbook" pattern="<<book>(.3)?</book>">   <p refix:m atch nam e="nam e"pattern ="<<nam e>(.3)?</nam e>"/>   </p refix:m atch>
   </p refix:text>
   </output>
  </operation>
</binding>
3.W eb服务的引用
服务做好了之后,客户端如何使用这样的虚拟服务?在使用上是否和普通的W eb服务相同?以.N ET平台开发客户端为例:首先,使用工具根据W SDL文档生成代理类文件;根据上文中的W SDL文档生成的类文件中产生了以下类型: public class G et B ookN am e M atches
{
[System.W eb.Serv ices.Protocols.M atchA t2 tribute("</book>(.3)</book>",IgnoreC ase
=true)]
public B ook B ook;
三个一切}
public class B ook
{
[System.W eb.Serv ices.Protocols.M atchA t2 tribute("<nam e>(.3?)</nam e>")]
public string[]B ookN am e;
}
接着在客户端应用中添加该类文件,根据代理类中的类型进行方法调用获取服务端数据。例如:
B ooks b=new B ooks();
Get B ook N a m e M atches b m=b.Get B ook N a m e();
泊松亮斑B ook bb=bm.B ook;
同一般的W eb服务类似,在服务端只存在xm l 文件,客户端也可以通过方法调用的形式获取xm l 文件中需要的数据。
三、结论
W SDL文档以端口集合的形式来描述W eb服务,服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个入口端点规范。在W SDL文档基础上实现虚拟服务,大大降低开发与维护成本,不涉及代码的维护工作。既不需要安装.N ET框架以保证程序的运行,也不需要编译程序单元重新部署,必要时只需修改说明文档,覆盖即可。
基于业界普遍遵循的标准,只需通过文本编辑工具即可提供数据服务,提高W eb服务开发的灵活性,与开发语言无关,与平台无关,也是一种发展趋势。

本文发布于:2024-09-22 23:32:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/256588.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务   文档   方法   描述   元素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议