• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

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

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

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

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

        在確定是否適合在您的應(yīng)用程序中采用異步 Web 方法時(shí),有幾個(gè)問題需要考慮。首先,調(diào)用的 BeginXXX 函數(shù)必須返回一個(gè) IAsyncResult 接口。IAsyncResult 是從多個(gè)異步 I/O 操作返回的,這些操作包括訪問數(shù)據(jù)流、進(jìn)行 Microsoft&reg; Windows&reg; 套接字調(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)程線程。您也可以占用原來的線程,同步運(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&reg; 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ù)。

        通過 Web 服務(wù)調(diào)用訪問 SQL 時(shí),需要注意眾多的后端資源。如果您使用了 TCP 套接字與 Unix 計(jì)算機(jī)通信,或者通過專用的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序訪問其他一些可用的 SQL 平臺(tái),甚至具有使用 DCOM 訪問的資源,您都可以考慮使用眾多的 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)用能力,而您的客戶端訪問機(jī)制會(huì)與異步 Web 方法高效率地配合工作。

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

        現(xiàn)在,許多 Web 服務(wù)都訪問后端的多個(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)程線程池中的寶貴線程。通過結(jié)合對(duì)后端資源的異步請(qǐng)求,服務(wù)器可以使用自己的 Web 方法使同時(shí)處理的請(qǐng)求數(shù)目達(dá)到最大。您應(yīng)該考慮使用此方法開發(fā)高性能的 Web 服務(wù)應(yīng)用程序。

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

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲国产精品成人AV在线| 久久亚洲精品无码VA大香大香| 亚洲一区二区三区在线| 日日麻批免费40分钟无码| 亚洲人成无码网站| 国产午夜成人免费看片无遮挡| 2022中文字字幕久亚洲| 精品一区二区三区免费观看 | 中美日韩在线网免费毛片视频| 国产男女猛烈无遮档免费视频网站| 亚洲区日韩精品中文字幕| 国产精品成人免费一区二区| 亚洲熟妇无码AV| 老司机永久免费网站在线观看| 亚洲欧美日韩自偷自拍| 四虎影视永久免费观看网址| 免费激情网站国产高清第一页| 中文字幕无码精品亚洲资源网| 久久国产免费观看精品| 亚洲欧洲日产国产综合网| 亚欧色视频在线观看免费| 亚洲一卡2卡3卡4卡5卡6卡| 最新69国产成人精品免费视频动漫| 在线观看亚洲免费| 黑人大战亚洲人精品一区| 99精品视频免费在线观看| 狠狠色伊人亚洲综合网站色| 在线免费观看韩国a视频| 国产精品一区二区三区免费| 亚洲国产香蕉碰碰人人| 国产成人免费高清激情视频| 人妻仑乱A级毛片免费看| 亚洲情XO亚洲色XO无码| 永久免费av无码不卡在线观看| 老司机亚洲精品影院在线观看| 亚洲乱码日产一区三区| 亚洲免费中文字幕| 一个人免费播放在线视频看片| 久久亚洲日韩精品一区二区三区| 免费无码黄网站在线观看| AAAAA级少妇高潮大片免费看|