Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】

简介:

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

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

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

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

   

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

[WebMethod]
        public  string  HelloWorld()
        {
            return  "Hello World For TestData" ;
        }

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

using  System.IO;
using  System.Xml;
using  System.Windows.Browser;
using  System.ServiceModel;
using  System.ServiceModel.Channels;
using  SLReadXML.LBControl;

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

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

clientaccesspolicy.xml源代码:

<?xml version= "1.0"  encoding= "utf-8"  ?>
<access-policy>
   <cross-domain-access>
     <policy>
       <allow- from  http-request-headers= "*" >
         <domain uri= "*" />
       </allow- from >
       <grant-to>
         <resource path= "/"  include-subpaths= "true" />
       </grant-to>
     </policy>
   </cross-domain-access>
</access-policy>


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

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

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

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



    本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/02/10/1950759.html,如需转载请自行联系原作者

相关文章
|
5月前
|
XML Java uml
spring 源码解析——第一篇(ioc xml方式)
spring 源码解析——第一篇(ioc xml方式)
52 0
|
5月前
|
XML Java Maven
第1次Spring源码学习之@Bean、@Configuration、xml、分析
第1次Spring源码学习之@Bean、@Configuration、xml、分析
61 0
|
4月前
|
XML Java Maven
Spring中AOP最简单实例-XML形式
Spring中AOP最简单实例-XML形式
20 0
|
5月前
|
XML 移动开发 前端开发
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
40 1
|
5月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
270 2
|
5月前
|
XML 数据格式
AXios接受XML格式的webservice并解析成数据格式
AXios接受XML格式的webservice并解析成数据格式
116 2
|
XML Java 数据库连接
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
【spring源码系列-03】xml配置文件启动spring时refresh的前置工作
107 0
|
5月前
|
XML 存储 BI
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
|
11月前
|
XML Java 数据格式
Spring高手之路16——解析XML配置映射为BeanDefinition的源码
本文提供了深入Spring源码的透彻解析,从XML配置文件的加载开始,步入了Spring的内部世界。通过细致剖析setConfigLocations、refresh和loadBeanDefinitions等方法的实现,揭示了Bean从定义到注册的整个生命周期。
117 1
Spring高手之路16——解析XML配置映射为BeanDefinition的源码
|
5月前
|
XML Java 数据格式
Spring5源码(17)-Spring解析xml默认命名空间
Spring5源码(17)-Spring解析xml默认命名空间
40 0

相关课程

更多
下一篇
无影云桌面