利用FrontPage使用XML WebService

來源:互聯網
上載者:User
frontpage|web|xml

   XML Web Service

  Microsoft? .NET Framework 最令人激動的一點是包含了可延伸標記語言 (XML) (XML) Web Service。Web 服務允許應用程式間以基於標準的方式來通訊和交換資訊。Microsoft 的 Web 服務的實現有許多內在的好處。使用超文字傳輸通訊協定 (HTTP) (HTTP) 和傳輸控制通訊協定/網際網路通訊協定 (TCP/IP),可以以 XML 格式交換資訊。因此,Web 服務使用現有結構,可以在現有環境中方便地實現。

  本文中,我們將使用 Microsoft GotDotNet Web 網站上的 EightBall Web 服務。我們將建立一個 Web 頁,該頁將向 EightBall Web 服務發送請求。EightBall Web 服務將接受並處理請求,並發回一個響應,可以在我們的 Web 頁上顯示該響應。這個使用 Web 服務的響應的過程就是所謂的“使用”Web 服務。

  使用 Web 服務的要求

  要使用 Web 服務,必須具有幾個組件。如果您使用的是 Microsoft Visual Studio? .NET,那麼這些組件會自動安裝到合適的位置。而為了實現本文的目標,我們將採用 Microsoft FrontPage? 的 Web 網站建立和管理工具來使用 Web 服務。

  要利用 FrontPage 來使用 Web 服務,您需要具備:

  1  Microsoft .NET Framework 軟體開發套件 (SDK)

  2  Microsoft Internet Information Services (IIS,Windows? 2000 Server 作業系統內建的 Web 服務器)

  3  Web 服務代理

  4  ASP.NET Web Form

  Microsoft .NET Framework SDK

  Microsoft .NET Framework 提供了用於 Microsoft .NET 平台的編程模型。它允許我們建立完善的 Web 服務和應用程式。.NET Framework 允許建立 ASP.NET 頁,該頁是使用 EightBall Web 服務時所必需的。要完成本文所述的這些步驟,您需要具有 .NET Framework SDK。

  Microsoft Internet Information Services

  我們必須具有 Web 服務器,而且 Web 服務器必須支援 ASP.NET。可以在 Windows 2000 或 Windows XP 上使用 Microsoft Internet Information Services。可能還需要安裝必要的安全更新。

  如果在安裝了 .NET Framework SDK 之後安裝 IIS,您需要運行 .NET Framework 目錄中的 Aspnet_regiis.exe 來安裝 ASP.NET 支援。

  Web 服務代理

  用戶端和 Web 服務之間使用簡易物件存取通訊協定 (SOAP) (SOAP) 訊息來通訊。詳細資料請參閱 SOAP 網站。Web 服務代理負責形成 SOAP 訊息並通過網路發送這些訊息。這使得使用 Web 服務異常容易,因為無需將參數映射給 XML 元素。Web 服務代理包括本地 Web 服務器上的動態連結程式庫 (DLL)。使用 .NET Framework SDK 附帶的名為 WSDL.exe 的公用程式,可以產生 Microsoft Visual Basic? .NET 或 C# 的原始碼檔案,然後使用該檔案來編譯 Web 服務代理。這是非常容易實現的,稍後我們將進行更加詳細的說明。

  ASP.NET Web Form

  我們需要為使用者提供一種向 EightBall 服務提問的方式。我們將使用 ASP.NET Web Form來實現這一目的。因為 FrontPage 不具備在使用者介面中產生 ASP.NET 組件的能力,我們將在 HTML 視圖中通過手動編碼產生 Web Form。

  為使用 Web 服務做準備

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

  1. 檢查 Web 服務。

  2. 產生原始碼檔案。

  3. 編譯 Web 服務代理。

  4. 設計 ASP.NET 介面。

  5. 串連 Web 服務。

  6. 複製代理。

  7. 測試 ASP.NET 應用程式。

  檢查 Web 服務

  為了檢查 Web 服務和查看其提供的資訊類型,我們瀏覽到 Web 服務進入點。該特定 Web 服務的連結是 http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx。如果您瀏覽至該 URL,將會看到該 Web 服務所支援的操作的列表。本例中,您將會看到指向 Ask 操作的連結。

  圖 1:用於 Ask 操作的 HTTP Post 資訊

  如果單擊指向 Ask 操作的連結,將會看到 SOAP 請求和 Web 服務響應的執行個體。如果檢查該請求和響應,將會發現 Ask 操作要求傳遞給它一個字串(注意 HTTP POST 段中的“psQuestion=string”文本)並返回一個字串。該頁上包括一個文字框,可以在其中鍵入問題並接收來自 EightBall Web 服務的 XML 格式的回答。

  要在 FrontPage 中設計介面來使用該 Web 服務,需要使用該資訊。通過檢查 Web 服務進入點的資訊,我們斷定需要設計一個表單,表單上要有一個文字框用於輸入問題,並且要有一個按鈕用來向 Web 服務提交問題。然後需要提供一個頁面元素來包含從 Web 服務返回的回答。以後我們將深入討論。現在,我們需要產生來源程式代碼,用來編譯 Web 服務代理類。

  產生原始碼檔案

  用於 Web 服務的實際 .NET 程式集駐留在裝載了該 Web 服務的 Web 服務器上。然而,用戶端的代理類負責為 Web 服務建立格式正確的 SOAP 請求。因此,我們需要在本地 Web 服務器上建立充當代理類的 .NET 程式集。使用 Microsoft 的 .NET Framework SDK 中提供的工具可以很容易地完成此操作。

  要組建代理程式類的原始碼檔案,我們將使用 Web 服務說明語言公用程式,即 WSDL.exe。您可以在安裝了 .NET Framework SDK 的目錄中找到該公用程式。(預設情況下,該公用程式將被安裝在 c:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin 檔案夾中。)WSDL.exe 允許我們為代理類建立源檔案。

  產生源檔案之前,請在磁碟機 C 的根目錄中建立一個用於 Web 服務檔案的目錄。將該目錄命名為 8Ball。建立該目錄後,我們就可以產生使用 EightBall Web 服務所必需的檔案了。

  要產生原始碼檔案:

  1. 單擊“開始”,指向“程式”,指向“附件”,單擊“命令提示字元”開啟命令提示字元視窗。

  2. 轉到包含 WSDL.exe 公用程式的目錄。

  3. 在命令列中鍵入以下內容,然後按 ENTER 鍵:

  wsdl /l:VB /o:c:\8ball\8ball.vb

  http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx?wsdl

  在 WSDL.exe 中使用下面的開關來產生源檔案:

  /l - 此開關指定源檔案的語言。本例中,我們指定 Visual Basic 語言。也可以指定 CS (C#) 語言,這將產生 C# 源檔案。

  /o - 此開關指定輸出檔案的名稱。Visual Basic 源檔案應該具有 .vb 副檔名。C# 源檔案應具有 .cs 副檔名。

  注意:使用 /? 開關可以獲得關於 WSDL 的詳細資料。

  傳遞給 WSDL 的 URL 是指向 Web 服務合約的 URL。Web 服務合約是一個文檔,列出了應該提供給該 Web 服務的資訊類型和它將返回的資訊類型。Web 服務合約的 URL 就是在 Web 服務進入點 URL 末尾附加 ?wsdl。

  現在我們已經成功地產生了用於編譯 Web 服務代理類的 Visual Basic .NET 原始碼檔案。

  編譯 Web 服務代理

  建立 Visual Basic .NET 源檔案後,我們需要將其編譯進 Web 服務代理中。要這樣做,我們將使用隨 .NET Framework SDK 附帶的 Visual Basic .NET 編譯器。

  要編譯代理類,請在開啟的命令提示字元下鍵入:

  Vbc /t:library /out:c:\8Ball\8BallClient.dll

  /r:System.dll /r:System.XML.dll /r:System.Web.Services.dll c:\8Ball\8Ball.vb

  我們使用以下的開關來組建代理程式類:

  /t - 此開關指定要產生的程式集類型。本例中,我們要編譯 DLL 檔案,所以指定程式集類型為 library。

  /out - 此開關指定輸出檔案的名稱。因為我們指定了 library 的程式集類型,因此輸出檔案名稱必須具有 .DLL 檔案副檔名。

  /r - 此開關指定程式集的引用。本例中,我們引用三個 Microsoft .NET 命名空間,所有的 Web 服務代理用戶端都需要這三個命名空間。它們是 System、System.XML 和 System.Web.Services 命名空間。

  編譯器完成代理類的編譯後,磁碟機 C 的 8Ball 目錄中就有了名為 8BallClient.dll 的檔案。這就是代理用戶端。稍後我們將把它移動到正確的位置。您可以關閉命令提示字元視窗,我們將繼續建立用於與 EightBall Web 服務進行互動的介面。

  設計 ASP.NET 介面

  現在我們已大體瞭解了需要建立的介面,並且已成功編譯了 Web 服務代理類。下一步是建立 ASP.NET 表單,用於與 EightBall Web 服務互動。

  設計 ASP.NET 介面之前,需要建立一個 FrontPage 項目。建立新的單頁 Web 網站並命名為 8Ball。必須在安裝了 ASP.NET 的 Web 服務器上建立該網站,這點很重要。

  建立了 8Ball 網站後,需要確保將其標記為應用程式的根。步驟如下:

  1. 單擊“開始”,指向“設定”,單擊“控制台”來開啟控制台。

  2. 雙擊“管理工具”。

  3. 雙擊“網際網路服務管理員”(Windows 2000) 或“Internet Information Services”(Windows XP Professional)。

  4. 展開“預設 Web 網站”節點,以便看到 8Ball 網站。(在 Windows XP Professional 中,您需要展開“Web 網站”節點來找到“預設 Web 網站”節點)

  5. 按右鍵 8Ball 節點並選擇“屬性”。

  6. 將開啟“屬性”對話方塊,並顯示“目錄”選項卡。如果沒有,請單擊“目錄”選項卡。

  7. 在“應用程式設定”部分中,單擊“建立”按鈕將該網站設為應用程式的根。

  8. 單擊“確定”。

  該 Web 網站現在已成為應用程式的根,我們可以繼續建立 ASP.NET 使用者介面了。

  使用者介面中將使用三個 ASP.NET Web Form控制項。TextBox 控制項用於輸入 EightBall Web 服務的問題,Button 控制項用於初始化對 Web 服務的請求,而 Label 控制項用於顯示從 Web 服務收到的回答。所有這些控制項都包含在 ASP.NET 表單中。

  使用 Microsoft Visual Studio .NET 來設計 Web Form非常容易,只需要拖放表單元素並在使用者介面中設定這些元素的屬性即可。本例中,我們沒有使用 Visual Studio .NET,所以不得不通過手動編碼產生表單元素。

  建立 Web Form

  需要做的第一件事是建立 Web Form自身的代碼。如果您熟悉超文字標記語言 (HTML) (HTML) 的表單代碼,那麼對該代碼也一定很熟悉。開啟 8Ball 網站的首頁並切換到 HTML 視圖。在現有的 標記中鍵入以下代碼:

<form runat="server"></form>

  除了添加了 runat 屬性以外,該代碼與 HTML 表單完全相同。runat 屬性的值是 server,表示該表單是 ASP.NET 伺服器控制項。這是 ASP.NET 的簡單性的一個非常完美的樣本。要使 HTML 元素成為 ASP.NET 伺服器控制項,只需添加 runat 屬性並將其值設定為 server。

  此時,應儲存本頁面並繼續以下步驟。將頁面儲存為 8ball.aspx。

  添加 ASP.NET Web Form控制項

  建立表單後,需要添加 ASP.NET Web Form控制項。

  首先,添加 TextBox 控制項。這是 Web 頁使用者輸入 EightBall Web 服務問題的地方。要添加 TextBox 控制項,請在開始和結束

標記之間添加以下代碼:

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

  如果您從來沒有在 ASP.NET 中進行過編碼,該代碼對您來說可能很陌生。附加到控制項名稱之前的 asp: 表示這是一個 ASP.NET Web Form控制項

  將其餘代碼添加到頁面中,表單代碼將如下所示:

   <form runat="server">
      <asp:TextBox id="tbQuestion" runat="server"/>
      <asp:Button id="btnGo" runat="server"
      Text="Submit Question" /><br><br>
      <asp:Label id="lblAnswer" runat="server"/>
   </form> 

  您可能注意到在 FrontPage 的普通視圖中看不到這些控制項。這正是所希望的,因為這些是 ASP.NET Web Form控制項,FrontPage 不能顯示它們。

  串連 Web 服務

  如果複查已經添加的代碼,會發現當單擊按鈕時,調用了名為 getAnswer 的過程。這是伺服器端的過程,負責:

  建立代理用戶端類的執行個體。

  調用 EightBall Web 服務的 Ask 函數並向其傳遞我們的問題。

  設定 Label 控制項的文本以便顯示從 Web 服務收到的回答。

  要建立該程式,在頁面中 結束標記前添加以下代碼:

<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> 標記是一個基本指令碼標記,但向其添加 runat="server" 以後便可以在伺服器上處理它。然後定義 getAnswer 過程。請注意這個程式需要兩個參數:sender 和 e。這是 Microsoft .NET 事件處理常式所需要的簽名。

      接下來,建立代理用戶端類的執行個體。我們怎麼知道該類名為 EightBallWS?使用記事本檢查用 WSDL 建立的 Visual Basic 源檔案,會看到以下代碼:

Public Class EightBallWS

      每個代理類都有一個與其相關的名稱,並且就是建立該類的新執行個體時所使用的名稱。我們稱 EightBallWS 類的執行個體為 clsEightBall。該名稱是任意選擇的。

      接下來,建立一個字串值 (strAnswer) 來容納 Web 服務返回的回答。請記住我們之前檢查過 Web 服務,並曾確定有一個名為 Ask 的操作,該操作接受字串參數並返回一個字串。

      然後,通過調用 Web 服務的 Ask 操作並將我們的問題傳遞給該操作,為 strAnswer 賦值。

strAnswer = clsEightBall.Ask(tbQuestion.Text)  

      將問題傳遞給 Ask 操作的方式是:將之前建立的 TextBox Web Form控制項 (tbQuestion) 的 Text 屬性傳遞該操作。我們已經知道 Web 服務的 Ask 操作將答案作為字串傳回給我們。因此,執行了上面的行後,strAnswer 將包含從 Web 服務返回的問題答案組成的字串。

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

lblAnswer.Text = strAnswer

      現在儲存該頁面。確保頁面儲存為 8ball.aspx。

      複製代理類

      測試新的 ASP.NET 頁前要做的最後一步是,將已編譯的代理類複製到 ASP.NET 應用程式中正確的位置。

      1. 在 FrontPage 網站中建立新檔案夾並命名為 bin。

      2. 將之前編譯的 8BallClient.DLL 檔案匯入到該檔案夾。

      測試 ASP.NET 應用程式

      現在我們可以測試 ASP.NET 應用程式了。瀏覽到 8ball.aspx 頁面。您會看到一個文字框和一個按鈕。在文字框中輸入問題並單擊按鈕。您將看到文字框下方會顯示來自 Web 服務的響應。

圖 2:操作中的 EightBall Web 服務

      小結

      在本文中,我們建立了一個非常簡單的 ASP.NET Web Form,以通過 Microsoft FrontPage 使用 Web 服務。我們已經展示了 XML Web Service 體繫結構的優點,並說明了通過訪問 Web 服務進入點來尋找關於 Web 服務特定資訊的方法。
使用簡單的 Web 服務(例如 EightBall Web 服務)是非常容易的。如果希望使用複雜的 Web 服務,您可能需要考慮使用 Microsoft Visual Studio .NET,因為它提供了強大的工具集,可用於使用 Web 服務,並可以在所見即所得 (WYSIWYG) (WYSIWYG) 的環境中設計 ASP.NET Web Form。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。