一起谈.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的调用也有效,手段类似,实现略有不同。

目录
相关文章
|
22天前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
382 2
|
1月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
7月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
261 0
|
11月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
161 6
|
11月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
159 6
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
241 0
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
373 0
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
298 0
|
存储 测试技术
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
233 0
Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本