采用服务定位器模式构建Web服务调用模型.pdf
《采用服务定位器模式构建Web服务调用模型.pdf》由会员分享,可在线阅读,更多相关《采用服务定位器模式构建Web服务调用模型.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、总第 239期2009 年第 9 期计算机与数字工程Computer&Digital EngineeringVol.37 No.932?采用服务定位器模式构建 Web 服务调用模型*冯新扬1)?范?颖2)?沈建京1)(信息工程大学理学院1)?郑州?450001)(河南广播电视大学2)?郑州?450008)摘?要?为了解决 Web 服务静态调用中服务地址不易修改、难以适应需求变化的问题,构建了一个 Web 服务动态调用模型。该模型采用了服务定位器模式设计,能够灵活配置服务地址,实现对 Web 服务的控制反转。结合一个简单服务,描述了利用.NET 的动态编译和反射技术对 Web 服务调用模型的实现
2、。关键词?Web 服务?服务定位器模式?调用模型?动态编译?反射中图分类号?TP393Constructing Invocation Model of Web Serviceswith Service Locator PatternFeng Xinyang1)?Fan Ying2)?Shen Jianjing1)(Science Institute,Information Engineering University1),Zhengzhou?450001)(Henan Radio&TV University2),Zhengzhou?450008)?Abstract?In static invo
3、cation of Web services,the client is hard to modify service address and unable to adapt to thechanges of requirement.In order to solve the problem,a dynamic invocation model of Web services is constructed.In themodel service locator pattern is adopted,so service address can be set flexibly and inver
4、sion of control of Web services isimplemented.An instance of a simple Web service is given to illustrate how to use dynamic compile and reflection in.NETto realize the invocation model of Web services.Key words?Web services,service locator pattern,invocation model,dynamic compile,reflectionClass Num
5、ber?TP3931?引言Web 服务作为一种新技术在软件开发中得到越来越广泛的使用,目前许多对 Web 服务的调用,都是采用静态引用服务地址,生成本地服务代理的方式 1。这样的方式虽然简单,却使客户端和提供Web 服务的地址、方法名、参数绑定在一起了,如果Web 服务地址等发生了改变,我们就必须重新编译,生成新代理。如果变化频繁或客户端数量较多,这种大量重新编译的情况是不能接受的。为了能对Web 服务进行灵活配置,动态加载服务,本文引入了服务定位器模式来重构 Web 服务的调用模型。2?服务定位器模式服务定位器(Service Locator)模式是 J2EE 的核心模式之一,它提供了一个将
6、所有对接口的依赖和实现细节都抽象到服务定位器中的机制 2,其背后的基本思想是:服务定位器知道如何获得一个应用程序所需的所有服务。也就是说,服务定位器应该有一个方法,用于获得一个所需要的服务对象实例。使用服务定位器对象来获得对接口的调用,隐藏复杂的初始创建过程,通过复用服务定位器对象来降低代码复杂度。从而将客户端代码和实际的实现代码解耦,用户可以在相同的接口上注册不同的实现,*收稿日期:2009年 4 月 10 日,修回日期:2009 年 6 月 5 日基金项目:河南省重点科技攻关项目(编号:082102210041)资助。作者简介:冯新扬,男,博士,研究方向:网络系统软件。范颖,女,硕士,助教
7、。沈建京,男,博士生导师,教授。第 37 卷(2009)第 9 期计算机与数字工程33?可以不改变使用的代码就能改变实现的功能。在面向服务的设计中,我们希望能建立一个动态调用服务的模型,将 Web 服务的地址保存在配置文件中,由服务定位器对象进行管理,服务的客户端运行时向服务定位器索取服务实例,实现服务的控制反转(IoC)3。将 Web 服务访问的配置与代码分离,这样的方式消除了服务消费者对服务的依赖,使系统进一步解耦,当需求变化,服务地址变更时,系统本身不必重新编译,只对其配置文件修改即可。符合?分离接口与实现 的设计原则 4,使系统结构更加清晰简洁,便于服务的重用,同时缩短程序开发的周期,
8、也减轻开发负担、降低维护成本。且服务定位器对象可以为系统加载服务提供集中控制点,为系统的优化提供了方便。3?一个简单服务为了能便于说明采用服务定位器模式的 Web服务调用模型,我们基于.NET 平台设计了一个Web 服务 BookService。我们不希望本文的主题湮没在复杂的业务逻辑和代码实现中,所以将该服务的功能设计的非常简单,它只提供一个 GetBook操作,GetBook 操作根据调用者指定的书名返回一个书籍对象 Book,书籍对象包括了编号、书名、价格等属性。该服务的服务描述(WSDL)5地址是http:/192.168.0.1/SimpleService/BookSer?vice.
9、asmx?wsdl,通过服务描述文档 WSDL 可以获取 Web 服务的端点信息。限于篇幅,下面给出服务的部分 WSDL:?!?!从上面的 WSDL 中可以了解到,在 Web 服务中用一个 XML Schema 的复杂类型 6Book 定义书籍对象,Book 包含的 三个属性 分别用元素Code、Name、Price 表示。portT ype 中定义了 Get?Book 操作,GetBook 操作输入消息为 GetBook?SoapIn,该消息携带一个代表书名的字符串参数,输出消息为 GetBookSoapOut,该消息返回一个Book 对象。4?Web 服务调用模型以调用本文中的简单服务为例
10、,我们来介绍采用服务定位器模式的 Web 服务调用模型。调用模型类结构如图 1 所示。图 1?Web 服务调用模型类图在上图中,Client 是服务的调用者,当 Client向服务定位器对象 ServiceLocator 发出服务请求时,ServiceLocator 根据 Client 的请求,创建服务实例,并将实例对象返回给 Client。Client 只依赖于ServiceLocator 和 IBookService 接口,而不需了解接口背后的具体实现是什么。4.1?服务配置文件在模型中,我们建立一个保存服务地址信息的XML 配置文件 ServicesConfig。其格式如下:34?冯新扬
11、等:采用服务定位器模式构建 Web 服务调用模型第 37 卷文档中 service 元素表示一个 Web 服务,name属性表示服务名称,url 则表示服务的地址。4.2?服务定位器ServiceLocator 是整个服务调用模型的核心。ServiceLocator 类具有两个主要操作:GetService和 DynamicCompile。以下是示意代码:public class ServiceLocatorpublic IBookService GetService()!string strURL=newXMLNode.Attributes?url .Value;Assembly asm=t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 采用 服务 定位器 模式 构建 Web 调用 模型
限制150内