溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

ASP.NET怎么構(gòu)造XML Web服務(wù)

發(fā)布時(shí)間:2021-12-06 13:36:44 來(lái)源:億速云 閱讀:114 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“ASP.NET怎么構(gòu)造XML Web服務(wù)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“ASP.NET怎么構(gòu)造XML Web服務(wù)”吧!

使用ASP.NET構(gòu)造一個(gè)簡(jiǎn)單的XML Web服務(wù)是相對(duì)容易的,然而,XML Web服務(wù)的真正的強(qiáng)大的功能只有等你研究了基礎(chǔ)結(jié)構(gòu)以后才能領(lǐng)悟。XML Web服務(wù)是建立在.NET框架和公共語(yǔ)言運(yùn)行時(shí)間基礎(chǔ)上的。一個(gè)XML Web服務(wù)可以利用這些技術(shù)。例如,ASP.NET支持的性能、狀態(tài)管理和驗(yàn)證全都可被用來(lái)構(gòu)造XML Web服務(wù)。

XML Web服務(wù)的基礎(chǔ)結(jié)構(gòu)是構(gòu)建來(lái)符合象SOAP、XML和WSDL這樣的行業(yè)標(biāo)準(zhǔn),并且它允許其他的平臺(tái)的客戶(hù)端與XML Web服務(wù)互操作。只要一個(gè)客戶(hù)端可以發(fā)送符合標(biāo)準(zhǔn)的SOAP消息、依據(jù)格式化的服務(wù)描述,那么這個(gè)客戶(hù)端可以調(diào)用一個(gè)使用ASP.NET創(chuàng)建的XML Web服務(wù)(不管客戶(hù)端存在于何種平臺(tái))。

當(dāng)你使用ASP.NET構(gòu)造一個(gè)XML Web服務(wù)時(shí),它自動(dòng)支持客戶(hù)端使用SOAP、HTTP-GET和HTTP-POST協(xié)議通訊。即使HTTP-GET和HTTP-POST支持使用URL編碼的變量名/變量值對(duì)來(lái)傳送消息,支持這兩個(gè)協(xié)議的數(shù)據(jù)類(lèi)型也沒(méi)有支持SOAP協(xié)議的數(shù)據(jù)類(lèi)型豐富。在SOAP中,使用XML把數(shù)據(jù)傳送到XML Web服務(wù)或從XML Web服務(wù)取回消息,你可以使用支持豐富的數(shù)據(jù)類(lèi)型集的XSD模式定義復(fù)雜的數(shù)據(jù)類(lèi)型。使用ASP.NET構(gòu)造一個(gè)XML Web服務(wù)的開(kāi)發(fā)者不必明確地定義復(fù)雜的數(shù)據(jù)類(lèi)型。他們可以只構(gòu)造一個(gè)管理類(lèi)。ASP.NET處理定義到一個(gè)XSD模式的映射類(lèi)和到XML數(shù)據(jù)的映射對(duì)象實(shí)例,以便通過(guò)網(wǎng)絡(luò)傳輸。

重要的是要注意XML Web服務(wù)并不能取代DCOM,我們應(yīng)該說(shuō)XML Web服務(wù)是跨越使用行業(yè)標(biāo)準(zhǔn)的平臺(tái)通信的一種消息傳遞基礎(chǔ)結(jié)構(gòu)。

因?yàn)锳SP.NET提供了為XML Web服務(wù)內(nèi)部工作的基礎(chǔ)結(jié)構(gòu),開(kāi)發(fā)者可以集中精力來(lái)實(shí)現(xiàn)他們的特定的XML Web服務(wù)的功能。使用ASP.NET開(kāi)發(fā)一個(gè)XML Web服務(wù)從下面三步開(kāi)始:

1. 創(chuàng)建一個(gè)帶有.asmx擴(kuò)展名的文件。

2. 在這個(gè)文件里面,使用一條指令聲明XML Web服務(wù)。

3. 定義組成XML Web服務(wù)功能的XML Web服務(wù)方法。

XML Web服務(wù)是一個(gè)強(qiáng)大的技術(shù),用于提供可通過(guò)因特網(wǎng)變成訪問(wèn)的服務(wù)。下面的建議將幫助你創(chuàng)建高效的XML Web服務(wù):

XML Web服務(wù)既支持同步的又支持異步的客戶(hù)端和存放XML Web服務(wù)的服務(wù)器之間的通信。在同步通信情況下,客戶(hù)端發(fā)送一個(gè)對(duì)服務(wù)的請(qǐng)求到服務(wù)主機(jī)服務(wù)器上等待響應(yīng)。這防止客戶(hù)端在等待結(jié)果的時(shí)候,執(zhí)行其它的操作。然而異步通信導(dǎo)致客戶(hù)端在等待相應(yīng)的時(shí)候繼續(xù)處理其它的任務(wù)??蛻?hù)端在可用的時(shí)候響應(yīng)服務(wù)請(qǐng)求的結(jié)果。

當(dāng)你使用Web服務(wù)描述語(yǔ)言工具(Wsdl.exe)來(lái)創(chuàng)建你的代理類(lèi)的時(shí)候,它產(chǎn)生類(lèi)中的方法的標(biāo)準(zhǔn)的、同步版本和異步版本。異步版本由兩個(gè)方法組成,稱(chēng)為Begin和End。Begin方法用于初始化XML Web服務(wù),而End方法取得結(jié)果。

使用異步通信能夠改善系統(tǒng)使用率和避免客戶(hù)端在它等待XML Web服務(wù)結(jié)果的時(shí)候的延遲。

下面的代碼示例顯示如何從一個(gè)客戶(hù)應(yīng)用程序產(chǎn)生一個(gè)到XML Web服務(wù)

<%@PageLanguage="C#"%> <%@ImportNamespace="System.Net"%> <html> <scriptlanguagescriptlanguage="C#"runat="server"> voidEnterBtn_Click(ObjectSrc,EventArgsE)  {  MyMath.Mathmath=newMyMath.Math();  //CalltoAddXMLWebservicemethodasynchronously  //andthenwaitforittocomplete.  IAsyncResultresult=  math.BeginAdd(Convert.ToInt32(Num1.Text),  Convert.ToInt32(Num2.Text),  null,  null);  //Waitforasynchronouscalltocomplete.  result.AsyncWaitHandle.WaitOne();  //CompletetheasynchronouscalltoAddXMLWebservicemethod.  floattotal=math.EndAdd(result);  //DisplayresultsinaLabelcontrol.  Total.Text="Total:"+total.ToString();  }  </script> <body> <formactionformaction="MathClient.aspx"runat=server> <fontfacefontface="Verdana"> Enterthetwonumbersyouwanttoaddandthenpress  theTotalbutton.  <p> Number1:  <asp:textboxidasp:textboxid="Num1" runat=server/> +  Number2:  <asp:textboxidasp:textboxid="Num2" runat=server/> =  <asp:buttonidasp:buttonid="Total_Button" text="Total" OnClick="EnterBtn_Click" runat=server/> <p> <asp:labelidasp:labelid="Total"runat=server/> </font> </form> </body> </html> [VisualBasic]  <%@PageLanguage="VB"%> <%@ImportNamespace="System.Net"%> <html> <scriptlanguagescriptlanguage="VB"runat="server"> SubEnterBtn_Click(SrcAsObject,EAsEventArgs)  DimmathAsNewMyMath.Math()  'CalltoAddXMLWebservicemethodasynchronously  'andthenwaitforittocomplete.  DimresultAsIAsyncResult=_ math.BeginAdd(Convert.ToInt32(Num1.Text),_  Convert.ToInt32(Num2.Text),_  Nothing,_  Nothing)   'Waitforasynchronouscalltocomplete.  result.AsyncWaitHandle.WaitOne()  'CompletetheasynchronouscalltoAddXMLWebservicemethod.  DimaddtotalAsSingle=math.EndAdd(result)  'DisplayresultsinaLabelcontrol.  Total.Text="Total:"&addtotal.ToString()  EndSub  </script> <body> <formactionformaction="MathClient.aspx"runat=server> <fontfacefontface="Verdana"> Enterthetwonumbersyouwanttoaddandthenpress  theTotalbutton.  <p> Number1:  <asp:textboxidasp:textboxid="Num1" runat=server/> +  Number2:  <asp:textboxidasp:textboxid="Num2" runat=server/> =  <asp:buttonidasp:buttonid="Total_Button" text="Total" OnClick="EnterBtn_Click" runat=server/> <p> <asp:labelidasp:labelid="Total"runat=server/> </font> </form> </body> </html>

到此,相信大家對(duì)“ASP.NET怎么構(gòu)造XML Web服務(wù)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI