web service實現原理與非同步呼叫

2021-04-19 21:33:08 字數 2488 閱讀 6042

net2.0環境下,web service中的每個方法,在client端新增引用後生成的**類中都會產生相應的非同步方法和結束事件。我們可以利用這個非同步方法和事件,輕鬆實現非同步呼叫web service.

簡單範例

假設在web service中定義了乙個資料查詢的方法:

[webmethod]

public dataset executequery(string sql)

catch (oracleexception ex)

finally

}客戶端:

///說明:

///panel1中放置了動態載入字樣的等

///   

public partial class frmstock : form

private

void frmstock_load(object sender, eventargs e)

private

void btnfind_click(object sender, eventargs e)

void w_executequerycompleted(object sender, wms.executequerycompletedeventargs e)

gvshow.autogeneratecolumns = false;

gvshow.datasource = dt;

}private

void btnexit_click(object sender, eventargs e)

private

void changestatus(bool sign)}

這樣,可以

1.避免了假死現象

2.可以提供友好的使用者體驗

實現原理

web service 發布後,客戶端新增引用,之後vs實際上在此時已經在後台生成本地**類。之後看起來像是對web service的操作,實際上是對本地**類的操作。**類中處理網路訪問邏輯,客戶端的使用就象操作本地類一樣簡單便捷。

客戶端發出web service請求後,請求到達**類,**類處理請求從服務端獲得soap資料報,而後進行資料處理後**客戶端。此中間涉及到的關於soap,wsdl等定義,簡單的可以理解為:soap中定義了傳輸資料型別的格式和規則,而wsdl則以xml的形式定義了web service的訊息和有關操作,通過http傳輸協議進行資料傳輸...

那麼**類中到底如何定義的呢?

我們可以通過自定義**類的方式來分析**類的詳細資訊。

1.首先建立web service:service.asmx

2.iis中建立虛擬目錄並發布

3.通過wsdl.exe工具生成**類。

開啟sdk命令提示視窗,如下作業:

其中service.cs就是生成的**類,開啟可見,其中涉及到非同步方法,事件的生成。(部分**如下)

/// 

public

event helloworldcompletedeventhandler helloworldcompleted;

/// 

public

event showinfocompletedeventhandler showinfocompleted;

/// 

public

string helloworld() 

/// 

public system.iasyncresult beginhelloworld(system.asynccallback callback, object asyncstate) 

/// 

public

string endhelloworld(system.iasyncresult asyncresult) 

/// 

public

void helloworldasync() 

/// 

public

void helloworldasync(object userstate) 

this.invokeasync("helloworld", new

object[0], this.helloworldoperationcompleted, userstate);

}private

void onhelloworldoperationcompleted(object arg) 

}/// 

4.通過csc命令把service.cs生成為dll檔案

5.在專案中新增對此dll的引用

6.這樣對此dll的應用實際上就是通過這個**類訪問我們發布的web service.

設計模式的應用

此種方式的實現,在設計模式中就是有名的「**模式」的實現方式。

WebService工作原理

webservice主要採用了http協議,http是個基於tcp ip的應用層協議 注 現在的大部分webservice開發已經能很好的支援socket的實時通訊了.但http依然是它的精髓.http採用了 請求 應答 模式 http通訊是通過xml序列化通訊的.http通訊過程 呼叫.asmx ...

Web service 原理和 開發

服務端 生成服務描述檔案,以供客戶端獲取。接收客戶端發來的soap請求訊息,解析其中的方法呼叫和引數格式。根據wsdl和wsml的描述,呼叫相應的com物件來完成指定功能,並把返回值放入soap回應訊息返回給使用者。高層介面 使用高層介面,不需要知道soap和xml的任何資訊,就可以生成和使用乙個w...

webservice的原理及概念

webservice的原理及概念 1 webservice 所謂webservice就是定義了一套標準的呼叫過程 a 伺服器首先用一套標準的方法向外界描述它所提供的服務的內容,就屬於wsdl b 客戶端需要以一種標準的協議來呼叫此服務,這屬於soap.c 服務提供者將服務內容放在乙個公共的 讓大家查...