日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

服務(wù)器端異步 Web 辦法

服務(wù)器端異步 Web 辦法

更新時(shí)間:2022-04-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

何時(shí)采用異步 Web 方法

在確定是否適合在您的應(yīng)用程序中采用異步 Web 方法時(shí),有幾個(gè)問(wèn)題需要考慮。首先,調(diào)用的 BeginXXX 函數(shù)必須返回一個(gè) IAsyncResult 接口。IAsyncResult 是從多個(gè)異步 I/O 操作返回的,這些操作包括訪問(wèn)數(shù)據(jù)流、進(jìn)行 Microsoft® Windows® 套接字調(diào)用、執(zhí)行文件 I/O、與其他硬件設(shè)備交互、調(diào)用異步方法,當(dāng)然也包括調(diào)用其他 Web 服務(wù)。您可以從這些異步操作中得到 IAsyncResult,以便從 BeginXXX 函數(shù)返回它。您也可以創(chuàng)建自己的類以實(shí)現(xiàn) IAsyncResult 接口,但隨后可能需要以某種方式包裝前面提到的某個(gè) I/O 操作。

對(duì)于前面提到的大多數(shù)異步操作,使用異步 Web 方法包裝后端異步調(diào)用很有意義,可以使 Web 服務(wù)代碼更有效。但使用委托進(jìn)行異步方法調(diào)用時(shí)除外。委托會(huì)導(dǎo)致異步方法調(diào)用占用進(jìn)程線程池中的某個(gè)線程。不幸的是,ASMX 處理程序?yàn)檫M(jìn)入的請(qǐng)求提供服務(wù)時(shí)同樣要使用這些線程。所以與對(duì)硬件或網(wǎng)絡(luò)資源執(zhí)行真正 I/O 操作的調(diào)用不同,使用委托的異步方法調(diào)用在執(zhí)行時(shí)仍將占用其中一個(gè)進(jìn)程線程。您也可以占用原來(lái)的線程,同步運(yùn)行您的 Web 方法。

下面的示例顯示了一個(gè)調(diào)用后端 Web 服務(wù)的異步 Web 方法。它已經(jīng)使用 WebMethod 屬性標(biāo)識(shí)了 BeginGetAge 和 EndGetAge 方法,以便異步運(yùn)行。此異步 Web 方法的代碼調(diào)用名為 UserInfoQuery 的后端 Web 方法,以獲得它需要返回的信息。對(duì) UserInfoQuery 的調(diào)用被異步執(zhí)行,并被傳遞到 AsyncCallback 函數(shù),后者被傳遞到 BeginGetAge 方法。這將導(dǎo)致當(dāng)后端請(qǐng)求完成時(shí),調(diào)用內(nèi)部回調(diào)函數(shù)。然后,回調(diào)函數(shù)將調(diào)用 EndGetAge 方法以完成請(qǐng)求。此示例中的代碼比前面示例中的代碼簡(jiǎn)單得多,并且還具有另外一個(gè)優(yōu)點(diǎn),即沒有在與為中間層 Web 方法請(qǐng)求提供服務(wù)的相同線程池中啟動(dòng)后端處理。

[WebService]

public class GetMyInfo : System.Web.Services.WebService

{

[WebMethod]

public IAsyncResult BeginGetAge(AsyncCallback cb, Object state)

{

// 調(diào)用異步 Web 服務(wù)調(diào)用。

localhost.UserInfoQuery proxy

= new localhost.UserInfoQuery();

return proxy.BeginGetUserInfo("用戶名",

cb,

proxy);

}



[WebMethod]

public int EndGetAge(IAsyncResult res)

{

localhost.UserInfoQuery proxy

= (localhost.UserInfoQuery)res.AsyncState;

int age = proxy.EndGetUserInfo(res).age;

// 在此對(duì) Web 服務(wù)的結(jié)果進(jìn)行其他

// 處理。

return age;

}

}

發(fā)生在 Web 方法中的最常見的 I/O 操作類型之一是對(duì) SQL 數(shù)據(jù)庫(kù)的調(diào)用。不幸的是,目前 Microsoft® ADO.NET 尚未定義一個(gè)完好的異步調(diào)用機(jī)制;而只是將 SQL 調(diào)用包裝到異步委托調(diào)用中對(duì)提高效率沒有什么幫助。雖然有時(shí)可以選擇緩存結(jié)果,但是也應(yīng)當(dāng)考慮使用 Microsoft SQL Server 2000 Web Services Toolkit(英文)將您的數(shù)據(jù)庫(kù)發(fā)布為 Web 服務(wù)。這樣您就可以利用 .NET Framework 中的支持,異步調(diào)用 Web 服務(wù)以查詢或更新數(shù)據(jù)庫(kù)。

通過(guò) Web 服務(wù)調(diào)用訪問(wèn) SQL 時(shí),需要注意眾多的后端資源。如果您使用了 TCP 套接字與 Unix 計(jì)算機(jī)通信,或者通過(guò)專用的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序訪問(wèn)其他一些可用的 SQL 平臺(tái),甚至具有使用 DCOM 訪問(wèn)的資源,您都可以考慮使用眾多的 Web 服務(wù)工具包將這些資源發(fā)布為 Web 服務(wù)。

使用這種方法的優(yōu)點(diǎn)之一是您可以利用客戶端 Web 服務(wù)結(jié)構(gòu)的優(yōu)勢(shì),例如使用 .NET Framework 的異步 Web 服務(wù)調(diào)用。這樣您將免費(fèi)獲得異步調(diào)用能力,而您的客戶端訪問(wèn)機(jī)制會(huì)與異步 Web 方法高效率地配合工作。

使用異步 Web 方法聚合數(shù)據(jù)

現(xiàn)在,許多 Web 服務(wù)都訪問(wèn)后端的多個(gè)資源并為前端的 Web 服務(wù)聚合信息。盡管調(diào)用多個(gè)后端資源會(huì)增加異步 Web 方法模型的復(fù)雜性,但最終還是能夠顯著提高效率。

假設(shè)您的 Web 方法調(diào)用兩個(gè)后端 Web 服務(wù):服務(wù) A 和服務(wù) B。從您的 BeginXXX 函數(shù),您可以異步調(diào)用服務(wù) A 和服務(wù) B。您應(yīng)該向每個(gè)異步調(diào)用傳遞自己的回調(diào)函數(shù)。在從服務(wù) A 和服務(wù) B 接收到結(jié)果后,為觸發(fā) Web 方法的完成,您提供的回調(diào)函數(shù)將驗(yàn)證所有的請(qǐng)求都已完成,在返回的數(shù)據(jù)上進(jìn)行所有的處理,然后調(diào)用傳遞到 BeginXXX 函數(shù)的回調(diào)函數(shù)。這將觸發(fā)對(duì) EndXXX 函數(shù)的調(diào)用,此函數(shù)的返回將導(dǎo)致異步 Web 方法的完成。

小結(jié)

異步 Web 方法在 ASP.NET Web 服務(wù)中提供了一個(gè)有效的機(jī)制,可以調(diào)用后端服務(wù),而不會(huì)導(dǎo)致占用卻不利用進(jìn)程線程池中的寶貴線程。通過(guò)結(jié)合對(duì)后端資源的異步請(qǐng)求,服務(wù)器可以使用自己的 Web 方法使同時(shí)處理的請(qǐng)求數(shù)目達(dá)到最大。您應(yīng)該考慮使用此方法開發(fā)高性能的 Web 服務(wù)應(yīng)用程序。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 国产精品一区久久 | 国产99视频精品草莓免视看 | 精品国产系列在线观看 | 精品视频免费在线 | 国产无限免费观看黄网站 | 狠狠久久 | 久久久日本久久久久123 | 精品亚洲一区二区三区在线播放 | 免费观看日本污污ww网站精选 | 亚洲一区图片 | 国产伦一区二区三区四区久久 | 亚洲欧美在线看 | 深夜在线影院 | 黄色不卡视频 | 国产亚洲精品免费 | 国产成人免费影片在线观看 | 新mature性xxxxchinese | 国产成人一区二区三区影院免费 | 日日a.v拍夜夜添久久免费 | 欧美一区二区三区久久综合 | 成年人视频免费 | 999久久久精品视频在线观看 | 日日摸夜夜添夜夜添毛片 | 久久久久久久久久久福利 | 伊人中文字幕在线观看 | 欧美日韩在线一区 | 亚洲欧美国产一区二区三区 | 国产福利午夜 | 亚洲桃色视频 | 国产小视频在线观看www | 黄动漫在线无限看免费 | 亚洲国产午夜 | 日本一区视频在线播放 | 亚洲不卡视频在线 | 亚洲成精品动漫久久精久 | 国产一区精品视频 | 四虎影视国产在线观看精品 | 四虎在线免费观看 | 国产色综合久久无码有码 | 亚洲v日韩v欧美在线观看 | 色综合888|