一起谈.NET技术,SilverLight调用WebService的方法

简介:   在我们添加Service Reference的时候,可能不知道该服务最终会被部署到什么位置,或者该服务可能被迁移,此时我们可以使用以下手段进行Service的调用,提高代码编写的灵活性。  步骤1:修改宿主Web页面的代码,将服务地址以初始化参数方式传入。

  在我们添加Service Reference的时候,可能不知道该服务最终会被部署到什么位置,或者该服务可能被迁移,此时我们可以使用以下手段进行Service的调用,提高代码编写的灵活性。

  步骤1:修改宿主Web页面的代码,将服务地址以初始化参数方式传入。

< form  id ="form1"  runat ="server"  style ="height:100%" >
    
< div  id ="silverlightControlHost" >
        
< object  data ="data:application/x-silverlight-2,"  type ="application/x-silverlight-2"  width ="100%"  height ="100%" >
          ...
          
< param  name ="InitParams"  value ="serviceAddress=http://localhost/services/myservices.asmx"   />
          
< href ="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0"  style ="text-decoration:none" >
               
< img  src ="http://go.microsoft.com/fwlink/?LinkId=108181"  alt ="Get Microsoft Silverlight"  style ="border-style:none" />
          
</ a >
        
</ object >< iframe  id ="_sl_historyFrame"  style ="visibility:hidden;height:0px;width:0px;border:0px" ></ iframe ></ div >
    
</ form >

  步骤2:添加Service引用并注册调用远程方法的事件处理。

  添加Service的引用不必赘述.但此处添加Service Reference的目的仅在于获得远程方法的命名空间等程序结构信息。

  如果我们的Silverlight程序主页面名叫MainPage,则在MainPage.xaml.cs中添加如下代码:

        public   void  InitializeServices( string  serviceAddress)
        {
            BasicHttpBinding basicBinding  =   new  BasicHttpBinding();
            CustomBinding binding  =   new  CustomBinding(basicBinding);
            BindingElement binaryElement  =   new  BinaryMessageEncodingBindingElement();

            EndpointAddress endPoint  =   new  EndpointAddress(serviceAddress);

            MyService.MyServicesSoapClient serviceClient  =  (MyServicesSoapClient)Activator.CreateInstance( typeof (MyServicesSoapClient), binding, endPoint);
            serviceClient.MyRemoteMethodCompleted  +=   new  EventHandler < MyService.MyRemoteMethodCompletedEventArgs > (serviceClient_MyRemoteMethodCompleted);
            serviceClient.MyRemoteMethodAsync(); // 调用远程方法
        }

  步骤3:修改App.xaml.cs,添加Application.Startup事件处理方法Application_Startup。

         private   void  Application_Startup( object  sender, StartupEventArgs e)
        {
            
this .RootVisual  =   new  MainPage();
            
string  serviceAddress  =  e.InitParams[ " serviceAddress " ].ToString();
            ( this .RootVisual  as  MainPage).InitializeServices(serviceAddress);
        }

  OK,至此,我们已经实现了在程序启动时调用一个MyRemoteMethod方法。以上代码稍加改动,我们就可以在程序的任意位置以这种方式调用远程方法了。

  此方法对WCF Service的调用也有效,手段类似,实现略有不同。

目录
相关文章
|
9天前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
|
9天前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
|
9天前
|
数据可视化 NoSQL C#
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
|
9天前
|
设计模式 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
34 7
|
1月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
47 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
40 0
|
2月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
2月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
104 0
|
5月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
169 0