程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 動態引用Web Service

動態引用Web Service

編輯:C#入門知識

  在項目中添加引用webservice是相對固定的,當webservice更換地址後需要將整個項目重新添加webservice引用,而動態配置則可以在webservice地址發生改變時只改動配置文件即可實現整個項目的webservice的引用的地址的更改,方便了操作。特別是在程序開發測試階段,可以先用本機的webservice測試,在測試成功後再發布到服務器上。具體的實現步驟如下:
1、添加本機的webservice引用
添加後的圖片:

\

在由引用webservice後,雙擊既可看到系統自動添加的代碼,如:

 
     [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Web.Services.WebServiceBindingAttribute(Name="GlobalWeatherSoap", Namespace="http://www.webserviceX.NET")]
    public partial class GlobalWeather : System.Web.Services.Protocols.SoapHttpClientProtocol {
        
        /// <remarks/> 
        public GlobalWeather() {
            this.Url = "http://www.webservicex.net/globalweather.asmx";
        }
 }
      [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.ComponentModel.DesignerCategoryAttribute("code")]
     [System.Web.Services.WebServiceBindingAttribute(Name="GlobalWeatherSoap", Namespace="http://www.webserviceX.NET")]
     public partial class GlobalWeather : System.Web.Services.Protocols.SoapHttpClientProtocol {
       
         /// <remarks/>
         public GlobalWeather() {
             this.Url = "http://www.webservicex.net/globalweather.asmx";
         }
  }
 動態引用webservice就是繼承系統自動添加的引用,並且將其中的url換位參數傳遞,默認的沒有參數的就是調用引用時的代碼,在更換webservice地址後需要引用帶參數的相應的函數,這樣既可以直接調試我們的系統,又可以在webservice地址發生改變時加以轉換。
 
2、生成動態引用的繼承類
 
需要引用的單元:
 
[csharp]
 using System.Diagnostics;
 using System.ComponentModel;
 using System.Web.Services;
 using System.Diagnostics;
 using System.ComponentModel;
 using System.Web.Services;
 需要生成的繼承類:
 
[csharp]
 /// <summary> 
 /// 動態引用webservice 
 /// </summary>    
 [DebuggerStepThrough(), DesignerCategory("code"), WebServiceBinding(Name = "", Namespace = "")]
 class Dyn_Weather : WeatherService.GlobalWeather
 {
     internal Dyn_Weather()
         : base()
     {
         this.Url = "http://www.webservicex.net/globalweather.asmx";
     }
 
     internal Dyn_Weather(string ip)     //帶參數的構造函數,www.2cto.com在調用時制定ip地址 
         : base()
     {
         this.Url=string.Format("http://{0}/globalweather.asmx",ip);
     }
 }
     /// <summary>
     /// 動態引用webservice
     /// </summary> 
     [DebuggerStepThrough(), DesignerCategory("code"), WebServiceBinding(Name = "", Namespace = "")]
     class Dyn_Weather : WeatherService.GlobalWeather
     {
         internal Dyn_Weather()
             : base()
         {
             this.Url = "http://www.webservicex.net/globalweather.asmx";
         }
 
        internal Dyn_Weather(string ip)     //帶參數的構造函數,在調用時制定ip地址
             : base()
         {
             this.Url=string.Format("http://{0}/globalweather.asmx",ip);
         }
     }
 
 
 3、調用動態webservice
 
[csharp]
 Dyn_Weather dy = new Dyn_Weather("192.168.1.10");//制定webservice的ip地址 
  
  lblDeviceid.Text =dy.GetWeather("beijing", "china").ToString();
            Dyn_Weather dy = new Dyn_Weather("192.168.1.10");//制定webservice的ip地址
           
             lblDeviceid.Text =dy.GetWeather("beijing", "china").ToString();
       這樣只需在構造函數時制定webservice服務的ip地址就可以實現webservice的動態配置,對於項目開發帶來了方便性。
 
 
 摘自#Define

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved