zoukankan      html  css  js  c++  java
  • 动态调用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,如需转载请自行联系原作者

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/twodog/p/12139020.html
Copyright © 2011-2022 走看看