程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 體驗.NET 2.0的優雅之異步Web服務調用

體驗.NET 2.0的優雅之異步Web服務調用

編輯:.NET實例教程
     在.Net1.x中,異步WebService異步調用的一般方式為調用方法XX對應的BeginXX方法來完成,其過程類似於異步委托的使用。
  
    在.net2.0中(准確的說是vs.Net 2005中),異步WebService異步調用的方式的例子:
  
  void DOSomethingTest()
  {
   localhost.Service service = new WindowsApp.localhost.Service();
  
   service.HelloWorldCompleted += new WindowsApp.localhost.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
   // do Asyn calling here
   service.HelloWorldAsync();
  }
  
  void service_HelloWorldCompleted(object sender, WindowsApp.localhost.HelloWorldCompletedEventArgs e)
  {
   if (e.Error == null)
   {
    MessageBox.Show(e.Result);
   }
   else
   {
    MessageBox.Show(e.Error.Message);
   }
  }
  
    服務器端代碼
  
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class Service : System.Web.Services.WebService
  {
   public Service () {}
  
   [WebMethod]
   public string HelloWorld() {
    return "Hello World";
   }
  }
  
    很簡單,沒有了AsyncCallback、IAsyncResult 這兩個煩人的東西,調用的代碼變得簡潔、優雅了,而且可以從e.Result得到強類型的返回值(上例為"Hello World")。但是,有興趣的話,可以看看vs.net2005生成的Referance.cs文件,那可比2003中的復雜很多。其中可以看到System.ComponentModel.AsyncCompletedEventArgs 、 System.Threading.SendOrPostCallback(delegate)這兩個在 .Net 1.x 中沒有的“怪物”,估計用到的地方還不止WebService客戶端。 
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved