ASP.NET伺服器端多線程設計——非同步Web Service

來源:互聯網
上載者:User

在上一章介紹過非同步IHttpHandler後,大家應該瞭解到非同步作業帶來的好處。它可以及時釋放伺服器線程池裡面的線程,當完成外部操作再使用回呼函數進行資料擷取。

下面為大家介紹一下非同步Web Service的操作,其實它與非同步IHttpHandler的原理是十分相似的,記得在介紹IHttpHandler裡面以Stream非同步作為例子,下面以SqlCommand作為例子。(還說一句老話,我這裡指的是伺服器端的非同步方式,而並非用戶端非同步呼叫)

[ISerializable]

public class User{....}

public class Service1:System.Web.Service.WebSerivce

{

      //系統會自動識別BeginMethod(參數,AsyncCallback,object),EndMethod(IAsyncResult)方法

      //並把它作為非同步方法呼叫處理

      [WebMethod]
  public IAsyncResult BeginGetList(int age,  AsyncCallback cb, object o)

     {          

           SqlConnection conn = new SqlConnection("Data Source=...;...;Asynchronous Processing=true");

           string commandString="Select * From User as t1 Where t1.age>"+age.ToString();
           SqlCommand command = new SqlCommand(commandString, conn);
           conn.Open();
           return this.m_cmd.BeginExecuteRead(cb, command);

           //此時,伺服器的線程會被釋放,等待Command完成時Callback喚醒

      }

  [WebMethod]
  public List<User> EndGetList(IAsyncResult result)

      {

            Sqlcommand command=(SqlCommand) result.AsyncState;    

            SqlDataRead read=command.EndExecuteRead(result);

            ............  //資料轉換

            return users;

      }

}

在用戶端調用的時候,由於資訊是通過SOAP方便傳遞,系統可以自動識別GetList(int age)方法。你也可以在用戶端使用非同步呼叫的方式,來調用WebService,這樣可以使系統配合得更完美。

可惜的是,微軟還沒有一個完美的非同步ADO.NET調用機制;而只是將 SQL 調用封裝到非同步委託調用中對提高效率沒有什麼協助。

個人建議可以嘗試使用 Microsoft SQL Server  Web Services Toolkit將您的資料庫發布為 Web 服務。

 

總結:

ASP.NET Web 服務中提供了一個有效機制,可以非同步呼叫後端服務,使線程池中的寶貴線程及時得到釋放。通過結合對後端資源的非同步請求,伺服器可以使用自己的 Web 方法使同時處理的請求數目達到最大。您應該考慮使用此方法開發高效能的 Web 服務應用程式。

 

ASP.NET伺服器端多線程設計——非同步Web服務

ASP.NET伺服器端多線程設計——非同步IHttpHandler

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.