2.Silverlight动态加载外部XML指定地址的WebService-(动态加载外部XML文件中指定的WebService地址)

简介:

接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以 此加载这个地址来动态加载WebService呢?这样子就可以避免当WebService地址改变的时候,还要打开XAP包来重新修改 WebService配置的地址了。

    答案当然是可以的。在这里,我制作了一个实例。

    在前面一节里面,我们讲到了使用WebClient来下载Silverlight程序外部的XML文件内容。在本节中,我们重点需要讲解一下如何使用反射来动态生成WebService代理类。关键代码如下:

 

 
  1. public void InitializeServices(string serviceAddress) 
  2.       { 
  3.           BasicHttpBinding basicBinding = new BasicHttpBinding();//创建BasicHttpBinding绑定类 
  4.           basicBinding.MaxBufferSize = 2147483647;//设置最大缓存字节 
  5.           basicBinding.MaxReceivedMessageSize = 2147483647;//设置最大的接受消息缓存字节 
  6.           CustomBinding binding = new CustomBinding(basicBinding); 
  7.   
  8.           BindingElement binaryElement = new BinaryMessageEncodingBindingElement(); 
  9.   
  10.           EndpointAddress endPoint = new EndpointAddress(serviceAddress);//根据读取的外部XML指定的Webservice地址来实例化终结点地址。 
  11.   
  12.           WebServiceSoapClient _LBControl = new WebServiceSoapClient();//实例化WebService代理类 
  13.           _LBControl = (WebServiceSoapClient)Activator.CreateInstance(typeof(WebServiceSoapClient), binding, endPoint);//使用反射来实例化我们需要指定的webService地址 

      当然以上只是关键性代码,我们在实践中还需要自己写一个WebService做测试,在本实例源代码程序中,我们在SLReadXML.Web项目中新建了一个WebService.asmx页面,此页面写了一个简单的WebService方法:

 
   
  1. [WebMethod] 
  2.        public string HelloWorld() 
  3.        { 
  4.            return "Hello World For TestData"
  5.        } 

然后我们右键点击SLReadXML项目名然后选择“添加服务引用”,在弹出的窗口中,我填入SLReadXML.Web中 WebService.asmx页面的http地址。(注意这里的Http以你自己的WebService地址为准,你可以重新架设一个网站目录或者IP 上。)http://localhost:1239/webService.asmx,然后点击“前进”,在这里创建好这个服务引用的代理类。并且命名此命名空间名为LBControl,然后我们需要在App.xaml.cs文件中引入以下命名空间:

 
   
  1. using System.IO; 
  2. using System.Xml; 
  3. using System.Windows.Browser; 
  4. using System.ServiceModel; 
  5. using System.ServiceModel.Channels; 
  6. using SLReadXML.LBControl; 

当然System.ServiceModel域名空间还需要单独引用其DLL文件。在SLReadXML右键--“添加引用”。

另外想要WebService能够被访问到,还需要添加clientaccesspolicy.xml文件,此文件叙述了你可以安全的引用某一个网 站下的WebService.类似于安全许可吧。值得注意的是这个文件必须放在你的网站的根目录下面,那么你的这个WebService文件才能够被访问 到。不是虚拟目录的根目录,而是你网站的根目录。切记。

clientaccesspolicy.xml源代码:

 
   
  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <access-policy> 
  3.   <cross-domain-access> 
  4.     <policy> 
  5.       <allow-from http-request-headers="*"> 
  6.         <domain uri="*"/> 
  7.       </allow-from> 
  8.       <grant-to> 
  9.         <resource path="/" include-subpaths="true"/> 
  10.       </grant-to> 
  11.     </policy> 
  12.   </cross-domain-access> 
  13. </access-policy> 

     好了。现在基本上已经可以实现动态的访问XML来动态的读取WebService地址。而不用每次都要去XAP包里面修改WebService地址了。那样太麻烦了。

最后给出Config.xml的源代码:

 
   
  1. <configuration> 
  2.     <TestData>http://localhost:1239/webService.asmx</TestData> 
  3.     <SecData>Secend Test Data</SecData> 
  4. </configuration> 

      本实例的源代码如下,点击请下载:SLReadXMLForWebService.rar 。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/821211

相关文章
|
1月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
57 1
|
3月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
11天前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
63 8
|
1月前
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
25 3
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
90 0
|
1月前
|
XML 存储 Web App开发
查看 XML 文件
查看 XML 文件
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
44 1
|
4月前
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
|
4月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
4月前
|
XML JavaScript Java
解析XML文件的几种方法
解析XML文件的几种方法

相关课程

更多