監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

利用FrontPage來(lái)使用XML Web Service

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

利用FrontPage來(lái)使用XML Web Service

Jimco

摘要:學(xué)習(xí)如何利用 FrontPage 來(lái)使用 Microsoft .NET XML Web Service。

請(qǐng)從 MSDN Code Center(英文)下載 FPWebSvc.exe 示例文件。

XML Web Service

Microsoft? .NET Framework 最令人激動(dòng)的一點(diǎn)是包含了可擴(kuò)展標(biāo)記語(yǔ)言 (XML) Web Service。Web 服務(wù)允許應(yīng)用程序間以基于標(biāo)準(zhǔn)的方式來(lái)通信和交換信息。Microsoft 的 Web 服務(wù)的實(shí)現(xiàn)有許多內(nèi)在的好處。使用超文本傳輸協(xié)議 (HTTP) 和傳輸控制協(xié)議/Internet 協(xié)議 (TCP/IP),可以以 XML 格式交換信息。因此,Web 服務(wù)使用現(xiàn)有結(jié)構(gòu),可以在現(xiàn)有環(huán)境中方便地實(shí)現(xiàn)。

本文中,我們將使用 Microsoft GotDotNet Web 站點(diǎn)上的 EightBall Web 服務(wù)。我們將創(chuàng)建一個(gè) Web 頁(yè),該頁(yè)將向 EightBall Web 服務(wù)發(fā)送請(qǐng)求。EightBall Web 服務(wù)將接受并處理請(qǐng)求,并發(fā)回一個(gè)響應(yīng),可以在我們的 Web 頁(yè)上顯示該響應(yīng)。這個(gè)使用 Web 服務(wù)的響應(yīng)的過(guò)程就是所謂的“使用”Web 服務(wù)。

使用 Web 服務(wù)的要求

要使用 Web 服務(wù),必須具有幾個(gè)組件。如果您使用的是 Microsoft Visual Studio? .NET,那么這些組件會(huì)自動(dòng)安裝到合適的位置。而為了實(shí)現(xiàn)本文的目標(biāo),我們將采用 Microsoft FrontPage? 的 Web 站點(diǎn)創(chuàng)建和管理工具來(lái)使用 Web 服務(wù)。

要利用 FrontPage 來(lái)使用 Web 服務(wù),您需要具備:

Microsoft .NET Framework 軟件開(kāi)發(fā)工具包 (SDK)

Microsoft Internet Information Services (IIS,Windows? 2000 Server 操作系統(tǒng)內(nèi)置的 Web 服務(wù)器)

Web 服務(wù)代理

ASP.NET Web 窗體

Microsoft .NET Framework SDK

Microsoft .NET Framework 提供了用于 Microsoft .NET 平臺(tái)的編程模型。它允許我們創(chuàng)建完善的 Web 服務(wù)和應(yīng)用程序。.NET Framework 允許創(chuàng)建 ASP.NET 頁(yè),該頁(yè)是使用 EightBall Web 服務(wù)時(shí)所必需的。要完成本文所述的這些步驟,您需要具有 .NET Framework SDK,這可以從 MSDN Code Center(英文)獲得。

Microsoft Internet Information Services

我們必須具有 Web 服務(wù)器,而且 Web 服務(wù)器必須支持 ASP.NET。可以在 Windows 2000 或 Windows XP 上使用 Microsoft Internet Information Services??赡苓€需要安裝必要的安全更新??梢栽L問(wèn) Windows Update(英文)來(lái)確定是否需要任何升級(jí)。

如果在安裝了 .NET Framework SDK 之后安裝 IIS,您需要運(yùn)行 .NET Framework 目錄中的 Aspnet_regiis.exe 來(lái)安裝 ASP.NET 支持。詳細(xì)信息請(qǐng)參閱 Microsoft Knowledge Base(英文)。

Web 服務(wù)代理

客戶端和 Web 服務(wù)之間使用簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (SOAP) 消息來(lái)通信。詳細(xì)信息請(qǐng)參閱 SOAP 站點(diǎn)(英文)。Web 服務(wù)代理負(fù)責(zé)形成 SOAP 消息并通過(guò)網(wǎng)絡(luò)發(fā)送這些消息。這使得使用 Web 服務(wù)異常容易,因?yàn)闊o(wú)需將參數(shù)映射給 XML 元素。Web 服務(wù)代理包括本地 Web 服務(wù)器上的動(dòng)態(tài)鏈接庫(kù) (DLL)。使用 .NET Framework SDK 附帶的名為 WSDL.exe 的實(shí)用程序,可以生成 Microsoft Visual Basic? .NET 或 C# 的源代碼文件,然后使用該文件來(lái)編譯 Web 服務(wù)代理。這是非常容易實(shí)現(xiàn)的,稍后我們將進(jìn)行更加詳細(xì)的說(shuō)明。

ASP.NET Web 窗體

我們需要為用戶提供一種向 EightBall 服務(wù)提問(wèn)的方式。我們將使用 ASP.NET Web 窗體來(lái)實(shí)現(xiàn)這一目的。因?yàn)?FrontPage 不具備在用戶界面中生成 ASP.NET 組件的能力,我們將在 HTML 視圖中通過(guò)手動(dòng)編碼生成 Web 窗體。

為使用 Web 服務(wù)做準(zhǔn)備

如果您已經(jīng)安裝了 Microsoft .NET Framework SDK 和 Internet Information Services,我們就可以馬上探究如何使用 EightBall Web 服務(wù)了。以下是使用 Web 服務(wù)需要采取的步驟:

檢查 Web 服務(wù)。

生成源代碼文件。

編譯 Web 服務(wù)代理。

設(shè)計(jì) ASP.NET 界面。

連接 Web 服務(wù)。

復(fù)制代理。

測(cè)試 ASP.NET 應(yīng)用程序。

檢查 Web 服務(wù)

為了檢查 Web 服務(wù)和查看其提供的信息類型,我們?yōu)g覽到 Web 服務(wù)入口點(diǎn)。該特定 Web 服務(wù)的鏈接是
http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx(英文)。如果您瀏覽至該 URL,將會(huì)看到該 Web 服務(wù)所支持的操作的列表。本例中,您將會(huì)看到指向 Ask 操作的鏈接。

圖 1:用于 Ask 操作的 HTTP Post 信息

如果單擊指向 Ask 操作的鏈接,將會(huì)看到 SOAP 請(qǐng)求和 Web 服務(wù)響應(yīng)的實(shí)例。如果檢查該請(qǐng)求和響應(yīng),將會(huì)發(fā)現(xiàn) Ask 操作要求傳遞給它一個(gè)字符串(注意 HTTP POST 段中的“psQuestion=string”文本)并返回一個(gè)字符串。該頁(yè)上包括一個(gè)文本框,可以在其中鍵入問(wèn)題并接收來(lái)自 EightBall Web 服務(wù)的 XML 格式的回答。

要在 FrontPage 中設(shè)計(jì)界面來(lái)使用該 Web 服務(wù),需要使用該信息。通過(guò)檢查 Web 服務(wù)入口點(diǎn)的信息,我們斷定需要設(shè)計(jì)一個(gè)窗體,窗體上要有一個(gè)文本框用于輸入問(wèn)題,并且要有一個(gè)按鈕用來(lái)向 Web 服務(wù)提交問(wèn)題。然后需要提供一個(gè)頁(yè)面元素來(lái)包含從 Web 服務(wù)返回的回答。以后我們將深入討論。現(xiàn)在,我們需要生成源程序代碼,用來(lái)編譯 Web 服務(wù)代理類。

生成源代碼文件

用于 Web 服務(wù)的實(shí)際 .NET 程序集駐留在裝載了該 Web 服務(wù)的 Web 服務(wù)器上。然而,客戶端的代理類負(fù)責(zé)為 Web 服務(wù)創(chuàng)建格式正確的 SOAP 請(qǐng)求。因此,我們需要在本地 Web 服務(wù)器上創(chuàng)建充當(dāng)代理類的 .NET 程序集。使用 Microsoft 的 .NET Framework SDK 中提供的工具可以很容易地完成此操作。

要生成代理類的源代碼文件,我們將使用 Web 服務(wù)說(shuō)明語(yǔ)言實(shí)用程序,即 WSDL.exe。(詳細(xì)信息,請(qǐng)參閱 http://www.w3.org/TR/wsdl [英文]。)您可以在安裝了 .NET Framework SDK 的目錄中找到該實(shí)用程序。(默認(rèn)情況下,該實(shí)用程序?qū)⒈话惭b在 c:Program FilesMicrosoft Visual Studio .NETFrameworkSDKBin 文件夾中。)WSDL.exe 允許我們?yōu)榇眍悇?chuàng)建源文件。

生成源文件之前,請(qǐng)?jiān)隍?qū)動(dòng)器 C 的根目錄中創(chuàng)建一個(gè)用于 Web 服務(wù)文件的目錄。將該目錄命名為 8Ball。創(chuàng)建該目錄后,我們就可以生成使用 EightBall Web 服務(wù)所必需的文件了。

要生成源代碼文件:

單擊“開(kāi)始”,指向“程序”,指向“附件”,單擊“命令提示符”打開(kāi)命令提示符窗口。

轉(zhuǎn)到包含 WSDL.exe 實(shí)用程序的目錄。

在命令行中鍵入以下內(nèi)容,然后按 ENTER 鍵:

wsdl /l:VB /o:c:8ball8ball.vb
http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx?wsdl

在 WSDL.exe 中使用下面的開(kāi)關(guān)來(lái)生成源文件:

/l - 此開(kāi)關(guān)指定源文件的語(yǔ)言。本例中,我們指定 Visual Basic 語(yǔ)言。也可以指定 CS (C#) 語(yǔ)言,這將生成 C# 源文件。

/o - 此開(kāi)關(guān)指定輸出文件的名稱。Visual Basic 源文件應(yīng)該具有 .vb 文件擴(kuò)展名。C# 源文件應(yīng)具有 .cs 文件擴(kuò)展名。

注意:使用 /? 開(kāi)關(guān)可以獲得關(guān)于 WSDL 的詳細(xì)信息。

傳遞給 WSDL 的 URL 是指向 Web 服務(wù)合約的 URL。Web 服務(wù)合約是一個(gè)文檔,列出了應(yīng)該提供給該 Web 服務(wù)的信息類型和它將返回的信息類型。Web 服務(wù)合約的 URL 就是在 Web 服務(wù)入口點(diǎn) URL 末尾附加 ?wsdl。

現(xiàn)在我們已經(jīng)成功地生成了用于編譯 Web 服務(wù)代理類的 Visual Basic .NET 源代碼文件。

編譯 Web 服務(wù)代理

創(chuàng)建 Visual Basic .NET 源文件后,我們需要將其編譯進(jìn) Web 服務(wù)代理中。要這樣做,我們將使用隨 .NET Framework SDK 附帶的 Visual Basic .NET 編譯器。

要編譯代理類,請(qǐng)?jiān)诖蜷_(kāi)的命令提示符下鍵入:

Vbc /t:library /out:c:8Ball8BallClient.dll /r:System.dll /r:System.XML.dll /r:System.Web.Services.dll c:8Ball8Ball.vb
我們使用以下的開(kāi)關(guān)來(lái)生成代理類:

/t - 此開(kāi)關(guān)指定要生成的程序集類型。本例中,我們要編譯 DLL 文件,所以指定程序集類型為 library。

/out - 此開(kāi)關(guān)指定輸出文件的名稱。因?yàn)槲覀冎付?library 的程序集類型,因此輸出文件名稱必須具有 .dll 文件擴(kuò)展名。

/r - 此開(kāi)關(guān)指定程序集的引用。本例中,我們引用三個(gè) Microsoft .NET 命名空間,所有的 Web 服務(wù)代理客戶端都需要這三個(gè)命名空間。它們是 System、System.XML 和 System.Web.Services 命名空間。

編譯器完成代理類的編譯后,驅(qū)動(dòng)器 C 的 8Ball 目錄中就有了名為 8BallClient.dll 的文件。這就是代理客戶端。稍后我們將把它移動(dòng)到正確的位置。您可以關(guān)閉命令提示符窗口,我們將繼續(xù)創(chuàng)建用于與 EightBall Web 服務(wù)進(jìn)行交互的界面。

設(shè)計(jì) ASP.NET 界面

現(xiàn)在我們已大體了解了需要?jiǎng)?chuàng)建的界面,并且已成功編譯了 Web 服務(wù)代理類。下一步是創(chuàng)建 ASP.NET 窗體,用于與 EightBall Web 服務(wù)交互。

設(shè)計(jì) ASP.NET 界面之前,需要?jiǎng)?chuàng)建一個(gè) FrontPage 項(xiàng)目。創(chuàng)建新的單頁(yè) Web 站點(diǎn)并命名為 8Ball。必須在安裝了 ASP.NET 的 Web 服務(wù)器上創(chuàng)建該站點(diǎn),這點(diǎn)很重要。

創(chuàng)建了 8Ball 站點(diǎn)后,需要確保將其標(biāo)記為應(yīng)用程序的根。步驟如下:

單擊“開(kāi)始”,指向“設(shè)置”,單擊“控制面板”來(lái)打開(kāi)控制面板。

雙擊“管理工具”。

雙擊“Internet 服務(wù)管理器”(Windows 2000) 或“Internet Information Services”(Windows XP Professional)。

展開(kāi)“默認(rèn) Web 站點(diǎn)”節(jié)點(diǎn),以便看到 8Ball 站點(diǎn)。(在 Windows XP Professional 中,您需要展開(kāi)“Web 站點(diǎn)”節(jié)點(diǎn)來(lái)找到“默認(rèn) Web 站點(diǎn)”節(jié)點(diǎn))

右鍵單擊 8Ball 節(jié)點(diǎn)并選擇“屬性”。

將打開(kāi)“屬性”對(duì)話框,并顯示“目錄”選項(xiàng)卡。如果沒(méi)有,請(qǐng)單擊“目錄”選項(xiàng)卡。

在“應(yīng)用程序設(shè)置”部分中,單擊“創(chuàng)建”按鈕將該站點(diǎn)設(shè)為應(yīng)用程序的根。

單擊“確定”。

該 Web 站點(diǎn)現(xiàn)在已成為應(yīng)用程序的根,我們可以繼續(xù)創(chuàng)建 ASP.NET 用戶界面了。

用戶界面中將使用三個(gè) ASP.NET Web 窗體控件。TextBox 控件用于輸入 EightBall Web 服務(wù)的問(wèn)題,Button 控件用于初始化對(duì) Web 服務(wù)的請(qǐng)求,而 Label 控件用于顯示從 Web 服務(wù)收到的回答。所有這些控件都包含在 ASP.NET 窗體中。

使用 Microsoft Visual Studio .NET 來(lái)設(shè)計(jì) Web 窗體非常容易,只需要拖放窗體元素并在用戶界面中設(shè)置這些元素的屬性即可。本例中,我們沒(méi)有使用 Visual Studio .NET,所以不得不通過(guò)手動(dòng)編碼生成窗體元素。

創(chuàng)建 Web 窗體

需要做的第一件事是創(chuàng)建 Web 窗體自身的代碼。如果您熟悉超文本標(biāo)記語(yǔ)言 (HTML) 的窗體代碼,那么對(duì)該代碼也一定很熟悉。打開(kāi) 8Ball 站點(diǎn)的主頁(yè)并切換到 HTML 視圖。在現(xiàn)有的 <body> 標(biāo)記中鍵入以下代碼:

   <form runat="server">

   </form>

除了添加了 runat 屬性以外,該代碼與 HTML 窗體完全相同。runat 屬性的值是 server,表示該窗體是 ASP.NET 服務(wù)器控件。這是 ASP.NET 的簡(jiǎn)單性的一個(gè)非常完美的示例。要使 HTML 元素成為 ASP.NET 服務(wù)器控件,只需添加 runat 屬性并將其值設(shè)置為 server。

此時(shí),應(yīng)保存本頁(yè)面并繼續(xù)以下步驟。將頁(yè)面保存為 8ball.aspx。

添加 ASP.NET Web 窗體控件

創(chuàng)建窗體后,需要添加 ASP.NET Web 窗體控件。

首先,添加 TextBox 控件。這是 Web 頁(yè)用戶輸入 EightBall Web 服務(wù)問(wèn)題的地方。要添加 TextBox 控件,請(qǐng)?jiān)陂_(kāi)始和結(jié)束 <form> 標(biāo)記之間添加以下代碼:

   <asp:TextBox id="tbQuestion" runat="server"/>

如果您從來(lái)沒(méi)有在 ASP.NET 中進(jìn)行過(guò)編碼,該代碼對(duì)您來(lái)說(shuō)可能很陌生。附加到控件名稱之前的 asp: 表示這是一個(gè) ASP.NET Web 窗體控件。(詳細(xì)信息請(qǐng)參閱 ASP.NET Web 窗體控件 [英文]。)

將其余代碼添加到頁(yè)面中,窗體代碼將如下所示:

<form runat="server">
     
<asp:TextBox id="tbQuestion" runat="server"/>
     
<asp:Button id="btnGo" runat="server"
     
Text="Submit Question" onClick="getAnswer"/><br><br>
     
<asp:Label id="lblAnswer" runat="server"/>
  
</form>
您可能注意到在 FrontPage 的普通視圖中看不到這些控件。這正是所希望的,因?yàn)檫@些是 ASP.NET Web 窗體控件,F(xiàn)rontPage 不能顯示它們。

連接 Web 服務(wù)

如果復(fù)查已經(jīng)添加的代碼,會(huì)發(fā)現(xiàn)當(dāng)單擊按鈕時(shí),調(diào)用了名為 getAnswer 的過(guò)程。這是服務(wù)器端的過(guò)程,負(fù)責(zé):

創(chuàng)建代理客戶端類的實(shí)例。

調(diào)用 EightBall Web 服務(wù)的 Ask 函數(shù)并向其傳遞我們的問(wèn)題。

設(shè)置 Label 控件的文本以便顯示從 Web 服務(wù)收到的回答。

要?jiǎng)?chuàng)建該程序,在頁(yè)面中 </head> 結(jié)束標(biāo)記前添加以下代碼:

<script runat="server">
  
Sub getAnswer(sender as Object, e As System.EventArgs)
     
Dim clsEightBall As EightBallWS = New EightBallWS
     
Dim strAnswer As String
     
strAnswer = clsEightBall.Ask(tbQuestion.Text)
     
lblAnswer.Text = strAnswer
  
End Sub

</script>

大致地檢查該代碼。

<script> 標(biāo)記是一個(gè)基本腳本標(biāo)記,但向其添加 runat="server" 以后便可以在服務(wù)器上處理它。然后定義 getAnswer 過(guò)程。請(qǐng)注意這個(gè)程序需要兩個(gè)參數(shù):sender 和 e。這是 Microsoft .NET 事件處理程序所需要的簽名。

接下來(lái),創(chuàng)建代理客戶端類的實(shí)例。我們?cè)趺粗涝擃惷麨?EightBallWS?使用記事本檢查用 WSDL 創(chuàng)建的 Visual Basic 源文件,會(huì)看到以下代碼:

Public Class EightBallWS

每個(gè)代理類都有一個(gè)與其相關(guān)的名稱,并且就是創(chuàng)建該類的新實(shí)例時(shí)所使用的名稱。我們稱 EightBallWS 類的實(shí)例為 clsEightBall。該名稱是任意選擇的。

接下來(lái),創(chuàng)建一個(gè)字符串值 (strAnswer) 來(lái)容納 Web 服務(wù)返回的回答。請(qǐng)記住我們之前檢查過(guò) Web 服務(wù),并曾確定有一個(gè)名為 Ask 的操作,該操作接受字符串參數(shù)并返回一個(gè)字符串。

然后,通過(guò)調(diào)用 Web 服務(wù)的 Ask 操作并將我們的問(wèn)題傳遞給該操作,為 strAnswer 賦值。

strAnswer = clsEightBall.Ask(tbQuestion.Text)  

將問(wèn)題傳遞給 Ask 操作的方式是:將之前創(chuàng)建的 TextBox Web 窗體控件 (tbQuestion) 的 Text 屬性傳遞該操作。我們已經(jīng)知道 Web 服務(wù)的 Ask 操作將答案作為字符串傳回給我們。因此,執(zhí)行了上面的行后,strAnswer 將包含從 Web 服務(wù)返回的問(wèn)題答案組成的字符串。

剩下要做的事情就是顯示我們檢索的答案。要完成此操作,需要將 strAnswer 中包含的值賦給 Label 控件的 Text 屬性。

lblAnswer.Text = strAnswer

現(xiàn)在保存該頁(yè)面。確保頁(yè)面保存為 8ball.aspx。

復(fù)制代理類

測(cè)試新的 ASP.NET 頁(yè)前要做的最后一步是,將已編譯的代理類復(fù)制到 ASP.NET 應(yīng)用程序中正確的位置。

在 FrontPage 站點(diǎn)中創(chuàng)建新文件夾并命名為 bin。

將之前編譯的 8BallClient.dll 文件導(dǎo)入到該文件夾。

測(cè)試 ASP.NET 應(yīng)用程序

現(xiàn)在我們可以測(cè)試 ASP.NET 應(yīng)用程序了。瀏覽到 8ball.aspx 頁(yè)面。您會(huì)看到一個(gè)文本框和一個(gè)按鈕。在文本框中輸入問(wèn)題并單擊按鈕。您將看到文本框下方會(huì)顯示來(lái)自 Web 服務(wù)的響應(yīng)。

圖 2:操作中的 EightBall Web 服務(wù)

小結(jié)

在本文中,我們創(chuàng)建了一個(gè)非常簡(jiǎn)單的 ASP.NET Web 窗體,以通過(guò) Microsoft FrontPage 使用 Web 服務(wù)。我們已經(jīng)展示了 XML Web Service 體系結(jié)構(gòu)的優(yōu)點(diǎn),并說(shuō)明了通過(guò)訪問(wèn) Web 服務(wù)入口點(diǎn)來(lái)查找關(guān)于 Web 服務(wù)特定信息的方法。

使用簡(jiǎn)單的 Web 服務(wù)(例如 EightBall Web 服務(wù))是非常容易的。如果希望使用復(fù)雜的 Web 服務(wù),您可能需要考慮使用 Microsoft Visual Studio .NET,因?yàn)樗峁┝藦?qiáng)大的工具集,可用于使用 Web 服務(wù),并可以在所見(jiàn)即所得 (WYSIWYG) 的環(huán)境中設(shè)計(jì) ASP.NET Web 窗體。

發(fā)布:2007-03-25 13:29    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢