首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

體驗 .NET 2.0 的優雅 (1):非同步 Web Service 呼叫簡化

     編輯:關於.NET

.NET 1.x 非同步呼叫需使用 BeginXX/EndXX 配合 AsyncCallback 與 IAsyncResult,程式碼繁瑣。.NET 2.0 (VS 2005) 引入事件基礎非同步模式,大幅簡化客戶端程式碼。

一、.NET 2.0 非同步呼叫範例


void DoSomethingTest() {
    localhost.Service service = new WindowsApp.localhost.Service();
    service.HelloWorldCompleted += new WindowsApp.localhost.HelloWorldCompletedEventHandler(service_HelloWorldCompleted);
    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);
    }
}

二、服務端程式碼 (標準 ASMX)


[WebService(Namespace = "https://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService {
    [WebMethod]
    public string HelloWorld() { return "Hello World"; }
}

三、優雅之處

  • 移除 AsyncCallback、IAsyncResult 兩大痛點
  • 程式碼簡潔、線性易讀
  • 強型別回傳值:直接從 e.Result 取得 ("Hello World")
  • 錯誤處理統一在 e.Error

四、幕後機制

有興趣可檢視 VS 2005 產生的 Reference.cs,比 2003 版複雜許多,內含:

  • System.ComponentModel.AsyncCompletedEventArgs
  • System.Threading.SendOrPostCallback (delegate)

這些類別不僅用於 Web Service 客戶端,更是 .NET 2.0 非同步程式設計基礎設施的核心組件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved