动态调用webSerivce-简易方法

简介:
     大家对webservice已经不再陌生了,涉及到的通信大部分都是用webservice。不过我还是看好wcf,因为毕竟是微软推出的新技术,各个方面还是蛮不错的,特别是你可以利用多种通信方式,如果IIS-SERVICE是在intranet中,利用wcf的net绑定方式的效率是要高于webservice的,不过对于internet,那wcf可以利用ws方式,实现webserivce的通信。所以个人认为wcf还是发展趋势的产物。
    在利用webservice时通常是添加web的引用,本文主要是讨论添加web引用时动态改变serviceIP的方法。当然利用webservice也是可以不添加引用的,不过需要用到反射,c#编译器,等等等等。。。效率相当慢,我这有源码,如果有兴趣我可以发给大家共同学习。
    因为在添加webservice的时候是需要提供webservice的地址和端口号的,因为添加完的service地址是固定的(我本以为这样,其实从某种意义上说就是这样),所以从网上搜了好多资料,但是没有找到好的解决方案,最后发现在config文件中发现.net给加了一个配置项放在appsetting下,这对我们改变service的地址是很方便的,因为你在添加引用的时候,.net其实是将服务的地址写在配置文件中了,因此如果以后service的地址变了可以通过该配置项修改ip就可以了。不过这不是纯意义上的动态调用webservice,如果webserivce发布在多台机器上,你可以希望根据需要来选择需要连接的service,比如用户可以根据需要填写ip来调用服务,这时候就需要一个代理类。经查msdn了解到soapHttpClientProtocol类,他是继承自httpWebClientProtocol,httpWebClientProtocol继承自webClientProtocol,只要调用webserivce使用soap,那么代理类就需要继承自soapHttpClientProtocol类,这几个类的关系可以在msdn上找到,所以你可以新建一个代理类,该代理类继承自soapHttpClientProtocol,因为在父类webClientProtocol类中有个url属性,设置这个属性的值就可以动态改变你添加的ip了,不过建议最好继承你添加web引用的那个类,因为引用的类是继承自soapHttpClientProtocol的,所以如果你继承自引用的类,那就可以调用service中的所有方法了,而不需要msdn说的那样,需要为每个service中的方法再在代理类中写一遍,一切以方便为最终目标。通过这种方式就可以解决了,并且比编译时动态调用webservice的效率要高的多。如果可能,还是推荐大家使用wcf,因为wcf已经集成了webservice,使用也很方便。


本文转自lidup 51CTO博客,原文链接:http://blog.51cto.com/lidup/162598,如需转载请自行联系原作者

相关文章
|
9月前
|
监控 API 数据处理
速卖通商品数据尽在掌握:揭秘高效利用API接口获取详情策略
速卖通(AliExpress)API助力电商数据处理与分析,提供商品搜索、价格监控等功能。开发者需注册账号、创建应用并获取API Key。常用接口包括商品搜索和详情API。调用时注意频率限制、数据延迟及错误处理。本文介绍全过程并附Python示例代码,帮助提升电商运营效率。
|
存储 算法 NoSQL
细说雪花算法
细说雪花算法
304 0
|
Java 数据库
Springboot集成SpringSecurity有源码
Springboot集成SpringSecurity有源码
|
机器学习/深度学习 并行计算 异构计算
CNN使用MNIST手写数字识别实战的代码和心得
CNN(Convolutional Neural Network)卷积神经网络对于MNIST手写数字识别的实战代码和心得
876 0
|
测试技术 人机交互 程序员
《软件测试的有效方法(第2版)》笔记(二)
《软件测试的有效方法(第2版)》笔记2 第四章 确定软件测试技术 测试是用来确定应用系统属性的存在、质量及其真实性的一种手段。 测试过程尽量做到结构化。
1092 0
修正Jbuilder代码编辑窗口光标与字符错位问题
在Jbuilder安装目录的bin文件夹下修改jbuilder.config文件,添加下面一行:    vmparam -Dprimetime.editor.useVariableWidthFont=true   关闭Jbuilder重新打开,看看效果吧。
953 0
|
11天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!