采用服务定位器模式构建web服务调用模型

上传人:子 文档编号:46771652 上传时间:2018-06-27 格式:PDF 页数:4 大小:224.24KB
返回 下载 相关 举报
采用服务定位器模式构建web服务调用模型_第1页
第1页 / 共4页
采用服务定位器模式构建web服务调用模型_第2页
第2页 / 共4页
采用服务定位器模式构建web服务调用模型_第3页
第3页 / 共4页
采用服务定位器模式构建web服务调用模型_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《采用服务定位器模式构建web服务调用模型》由会员分享,可在线阅读,更多相关《采用服务定位器模式构建web服务调用模型(4页珍藏版)》请在金锄头文库上搜索。

1、总第 239期2009 年第 9 期计算机与数字工程 Computer Assembly asm =this. DynamicCompile( strURL) ;return new BookService( asm);public Assembly DynamicCompile(string strURL) !return asm;GetService 负责读取配置文件 ServicesConfig中的服务地址, 调用 DynamicCompile 对地址指向的服务进行动态编译, 并创建服务实例返回给调用者。DynamicCompile 负责对服务进行动态编译。我们使用. NET Frame

2、work 中的? 代码文档对象模型 ( CodeDOM) 机制来实现动态编译, 该机制允许编写源代码的程序的开发人员可以在运行时, 根据表示所呈现代码的单一模型, 用多种编程语言生成源代码 7。在 CodeDom 中可以为代理类添加命名空间, 设置编译语言( 本文中为 CSharp) , 加载需要的程序集等一系列编译参数。最后返回 Assembly类型的编译结果对象 asm。4. 3? 数据对象Book 是一个数据类, 它是服务描述文件 WS?DL 中 types 元素内所包含的复杂类型 Book 的反序列化结果。与服务端相同, Book 类包含了编号、书名、 价格属性。在我们的调用模型中,

3、由于 Web服务是动态调用的, 所以 Book 反序列化也是动态进行, 无法预知其数据类型, 我们要依靠反射来读写 Book 的属性。反射( Reflection) 是. NET 中的重要机制, 通过反射, 可以在运行时获得. NET 中每一个类型( 包括类、 结构、 委托、 接口和枚举等) 的成员, 包括方法、 属性、 事件, 以及构造函数等 8。还可以获得每个成员的名称、 限定符和参数等。有了反射, 即可对每一个类型了如指掌。如果获得了构造函数的信息, 即可直接创建对象, 即使这个对象的类型在编译时还不知道。示意代码如下:public class Bookpublic string Nam

4、eset bookType. GetProperty (? Name ) . SetValue ( book,value, null); get return(string) bookType. GetProperty(? Name ). GetValue(book,null) ; 在上述代码中, bookT ype 是服务调用时动态获得的数据类型, book 是该类型的实例。通过这样的设计, 利用反射就可以对服务端的数据对象进行操作, 对客户端而言这与操作本地对象无异。4. 4? 服务接口及实现IBookService 是本地服务接口, 对应 WSDL中的 portT ype, 它所包含的操

5、作与 portT ype 中的operation 有一对一的映射, 每个操作的参数和返回值均源自 operation 中 input 元素和 output 元素引用的 message 定义。具体到本文的简单服务中,IBookService 包含一个 GetBook 操作, 它的输入参数为书名( string) , 返回一个书对象( Book) 。BookService 是 IBookService 接口的实现类,它提供了 GetBook 操作的具体实现。在 GetBook操作的实现中我们同样使用了反射机制。BookS?ervice 利用 ServiceLocator 编译好的程序集, 获得服务

6、类型和数据类型, 再通过 Activator 的 Cre?ateInstance 方法获取服务实例, 然后根据方法名称GetBook 反射获得该方法的实体, 并通过该方法的Invoke 来调用, Invoke 会返回一个数据对象。示意代码如下:public Book GetBook(string Name)object methotParameter =new object Name;MethodInfo methodRead =serviceT ype. GetMethod(? Get?Book );object bookObj =Activator. CreateInstance( boo

7、kT ype) ;bookObj =methodRead. Invoke(serviceObj, methotParam?eter);return new Book( stuObj);4. 5? 服务调用当客户端 Client 调用服务时, Client 通过 Ser?viceLocator 的 GetService 方法来获取服务, Ser?viceLocator 读取配置文件中的服务地址, 并动态编译服务代理类, 然后向 Client 返回 IBookService( 下转第 44 页)44? ? ?田玉松等: 基于层次分析方法的分阶段网站资源保护研究第 37 卷查看总排序时, 虽然修改文

8、件名或路径方法所占权重最大, 但是考虑到是在淡化网站资源保护成本( 包括时间成本) 和可用性的前提下所做的层次方法分析, 综合分析网络学堂资源量庞大的实际情况, 得出网络学堂的分阶段整体资源保护方案:第一阶段运用 WEB用户认证和动态 URL 链接方法保护网站资源; 第二阶段采取流媒体资源传输加密技术进行保护; 第三阶段采用数字水印和视频、图片文件添加 logo 的方法对网站资源进行保护。方案经过运行测试, 可有效防止网站资源流失, 资源保护成本和网站可用性均符合要求。6 ? 结语本文将层次分析方法( AH P) 应用于网站资源保护方案设计决策, 采用定性与定量相结合的分析方法, 并提出了分阶

9、段网站资源保护思路, 得到最合理的网站资源保护整体方案。未来工作将致力于不同类型网站的资源保护方案模型。参 考 文 献1马爽. VOD 安全认证系统的组成与实现 J. 电视与广播技术, 2007, (8) : 106 1072钱爱增, 谢延红. 基于网段的网站资源保护系统J. 德州学院学报, 2003, 19(2): 79 813 李朝荣, 张鹰, 张安妮, 等. 数字水印与数字签名在Web资源保护中的研究与应用 J. 情报杂志, 2006, (2): 24 264葛照君, 盛磊. 网络图片安全策略及其应用 J . 电脑知识与技术, 2008, 4(3) : 624 6255周丁丁, 董仕.

10、DRM 版权保护在 P2P 流媒体的应用研究J. 科技创新导报, 2008, (19) : 20 216袁楷, 黄东军. 流媒体服务器防盗链系统 J . 企业技术开发, 2007, 26( 1) : 9 117陈道敏, 周金泉. 加密技术在流媒体安全传输中的应用J. 网络安全技术与应用, 2004, (11) : 53 558杨晓兵, 刘臣. 基于 AHP 和因果分析法的 IT 项目风险因素分析J . 科技创业月刊, 2006, 19(1): 36 37( 上接第 34 页)接口类型的 BookService 服务实例。Client 利用BookService 中的操作 GetBook, 就能

11、得到 Book 对象, 并读写其属性。由于 ServiceLocator 的存在,定位服务地址、 动态编译服务等过程对客户端完全透明, 客户端 Client 可以向使用本地对象一样去使用 BookService 和 Book, 这大大降低了代码复杂度, 提高了设计效率。Web 服务调用场景时序如图 2 所示。图 2? Web 服务调用场景时序图5 ? 结语在本文中的 Web 服务调用模型中, 我们采用了服务定位器模式, 结合. NET 的动态编译和反射技术, 实现了 Web 服务的可配置与动态调用。如果服务地址发生改变, 只需在服务配置文件中修改服务的地址信息即可, 无需重新编译客户端。且由于

12、模型面向接口设计, 即使我们不是调用服务, 而是使用其他业务组件, 只要该组件符合接口约束就能适用。采用服务定位器模式构建的 Web 服务调用模型能使客户端进一步解耦, 获得更高的灵活性和更强的可扩展性。参 考 文 献1Richard Monson ?Haefel. 崔洪斌, 王爱民, 译. J2EEWeb Services 高级编程 M . 北京: 清华大学出版社, 20052DEEPAK ALUR, JOHN CRUPI, DAN MALKS.刘天北, 熊节, 译. J2EE 核心模式(第 2 版) M . 北京: 机械工业出版社, 20053 MARTIN FOWLER. Inversi

13、on of Control Con?tainers and the Dependency Injection pattern EB/ OL . ht?tp: / www. martinfowler. com/articles/ injection. html, 20044ROBERT C. MARTIN. 邓辉, 译. 敏捷软件开发:原则、 模式与实践 M. 北京: 清华大学出版社, 20035 Web Services Description Language ( WSDL) 1. 1EB/ OL . http: / /www. w3. org/ TR/ wsdl, 20016XML Sch

14、ema Part 1: Structures Second Edition EB/OL . http: / www. w3. org/TR/ xmlschema- 1/ , 20047 Dynamic Source Code Generation and CompilationEB/ OL . http: / /msdn. microsoft. com/ en - us/ library/650ax5cx(VS. 80) . aspx8 Reflection ( C#Programming Guide) EB/OL.http: / msdn. microsoft. com/en -us/ library/ms173183(VS. 80) . aspx

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号