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

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊

利用自定義Web控件構(gòu)造XML網(wǎng)絡(luò)服務(wù)應(yīng)用

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

AMTeam.org

利用自定義Web控件構(gòu)造XML網(wǎng)絡(luò)服務(wù)應(yīng)用

本文將要告訴您:在全新的.NET平臺(tái)上,利用自定義Web控件來(lái)使用XML網(wǎng)絡(luò)服務(wù)是多么簡(jiǎn)單。

什么是自定義Web控件?讓我們來(lái)看看微軟的解釋?zhuān)骸癢eb控件運(yùn)行在Web服務(wù)器上,它包括表單控制(例如:按鈕和文本框等)和某些特殊用途的控件(例如:日歷控件等)。因此,Web控件允許您通過(guò)編程控制這些網(wǎng)頁(yè)元素。Web控件比HTML控件更加抽象,故它的目標(biāo)模型不受HTML語(yǔ)法的限制”(原文見(jiàn)http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIWebControls.asp)。
稍后我們將利用Web控件在網(wǎng)頁(yè)上顯示一些文本。

微軟對(duì)“XML網(wǎng)絡(luò)服務(wù)”所下的定義是:“遵循標(biāo)準(zhǔn)的Internet協(xié)議,存在于Web服務(wù)器上的可編程實(shí)體”(原文見(jiàn)http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWebServices.asp)。

現(xiàn)在來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的Web服務(wù)器控件,它的功能是從可擴(kuò)展標(biāo)示語(yǔ)言(XML)網(wǎng)絡(luò)服務(wù)中讀取文本,并且顯示在網(wǎng)頁(yè)上;所用的工具是在DOS方式下的一個(gè)簡(jiǎn)單的文本編輯器。這個(gè)例子非常實(shí)用,因?yàn)閃eb服務(wù)器控件是一個(gè)獨(dú)立的軟件包。您只需要發(fā)布編譯過(guò)的DLL文件,而用戶(hù)只需用鼠標(biāo)把控件拖放到目標(biāo)網(wǎng)頁(yè)即可,余下的工作全部由控件來(lái)完成。這樣,大多數(shù)Web應(yīng)用都可以實(shí)現(xiàn)高度的模塊化,因?yàn)樗械姆爆嵐ぷ鞫急环庋b到控件內(nèi)部了。

第一步:取得數(shù)據(jù)

現(xiàn)在市場(chǎng)上有許多優(yōu)秀的XML網(wǎng)絡(luò)服務(wù)可供選擇。我將選擇一種能產(chǎn)生引文(出自名家或非名家之筆)的Web服務(wù)供本文使用。因此我們的第一任務(wù),就是要選定最合適的XML網(wǎng)絡(luò)服務(wù)。候選的公共Web服務(wù)有三個(gè):

1.SANTRA Technology的iON服務(wù) - http://www.mysantra.com

2.XMethods的Web服務(wù) - http://www.xmethods.com

3.Sal Services的Web服務(wù)經(jīng)紀(jì)人 - http://www.salcentral.com

我個(gè)人偏愛(ài)http://www.mysantra.com,因?yàn)樗峁┰S多高級(jí)功能:監(jiān)聽(tīng)、警示、運(yùn)行時(shí)間統(tǒng)計(jì)等,還有便利的比較功能。我們將要用到的內(nèi)容是Santra經(jīng)過(guò)反復(fù)搜索和比較之后才提供的。在Santra服務(wù)詳情(http://www.mysantra.com/MyService_Details.asp?service_id=358)里還包含WSDL文件的地址,現(xiàn)在把這個(gè)路徑復(fù)制到剪貼板里,在工程里將用它來(lái)建立Web服務(wù)引用。

第二步:準(zhǔn)備工作

首先,創(chuàng)建工程文件夾,例如“c:inetpubWebControlsQuote”,導(dǎo)入Web服務(wù)引用。

然后,點(diǎn)擊Start->Run,鍵入cmd,回車(chē),切換到工程所在目錄(cd c:inetpubWebControlsQuote),現(xiàn)在我們可以導(dǎo)入Web服務(wù)了。

在.NET框架里,有一個(gè)便利的公用程序wsdl.exe。

Web服務(wù)描述語(yǔ)言 (WSDL)工具為ASP.NET的Web服務(wù)生成代碼,位于WSDL的客戶(hù)端讀取文件、XSD schema和.discomap發(fā)現(xiàn)文件(譯者注:發(fā)現(xiàn)文件是包含所有可用Web服務(wù)摘要的XML文件)。(參見(jiàn)http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfwebservicesdescriptionlanguagetoolwsdlexe.asp)。wsdl.exe能與disco.exe聯(lián)用。

鍵入wsdl/?可以得到wsdl.exe的簡(jiǎn)單幫助信息(完整的描述已經(jīng)超出本文范圍)。這里用到的命令非常簡(jiǎn)單: wsdl/namespace:SantraQuote http://rob.santra.com/webservices/public/quote/index.asmx?wsdl

輸出結(jié)果:

Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 1.0.3328.4]
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.

Writing file 'C:InetpubWebControlsQuoteQuoteService.cs'.

通過(guò)這條命令,我們將在名字空間SantraQuote下使用我們給出的URL提供的XML網(wǎng)絡(luò)服務(wù)生成一個(gè)代理服務(wù)類(lèi),相應(yīng)的類(lèi)文件QuoteService.cs將被自動(dòng)生成。

現(xiàn)在把我們的Web控件代碼加到代理服務(wù)類(lèi)中。為什么要把代碼直接加進(jìn)去?固然,其他Web服務(wù)程序可以通過(guò)定義另外的名字空間和類(lèi),并且引用代理服務(wù)類(lèi)實(shí)現(xiàn)復(fù)用;但是,我們要發(fā)布的是單個(gè)自我包含的DLL文件,因此我們把控件代碼全部封裝到同一個(gè)文件和名字空間里。

第三步:編碼Web控件

在我們的QuoteService.cs文件里面有許多代碼用于加工XML網(wǎng)絡(luò)服務(wù)提供的內(nèi)容,不管它。首先,為名字空間UI和WebControls建立引用:

using System.Web.UI;
using System.Web.UI.WebControls;

然后,增加一個(gè)QuoteControl類(lèi),它只有一個(gè)方法(Render),其功能是調(diào)用QuoteService類(lèi)的“Quote”方法:

public class QuoteControl : Control {
QuoteService QS = new QuoteService();
protected override void Render( HtmlTextWriter writer) {
writer.Write(QS.Quote());
}
}


現(xiàn)在,我們可以編譯名字空間了。在DOS提示狀態(tài)下,我們將會(huì)使用 C#編譯器csc。在編譯以前,先看看它的幫助信息(csc /?)。本例我們僅僅用到一個(gè)命令:

csc /t:library /out:C:InetpubwwwrootbinQuoteServiceControl.dll QuoteService.cs

輸出結(jié)果是:

Microsoft (R) Visual C# .NET Compiler version 7.00.9372.1
for Microsoft (R) .NET Framework version 1.0.3328
Copyright (C) Microsoft Corporation 2001. All rights reserved.

這個(gè)結(jié)果代表編譯成功。如果發(fā)生任何錯(cuò)誤,它將會(huì)有詳細(xì)的解釋?zhuān)⒅赋鲥e(cuò)誤在哪里。因此,通過(guò)簡(jiǎn)單的調(diào)試,控件就能通過(guò)編譯了。

命令行中的/t參數(shù)用來(lái)指定目標(biāo)類(lèi)型,我們用的是library,以便應(yīng)用于其他工程;此外,我們還用了/out:參數(shù)指定DLL文件名(QuoteServiceControl.dll)和目標(biāo)路徑(本例在Web根目錄下的bin子目錄)。

忙了大半天,最終得到了什么?呃,請(qǐng)看看Web根目錄下的bin子目錄,您會(huì)發(fā)現(xiàn)QuoteServiceControl.dll這個(gè)文件,它包含了我們的Web服務(wù)器控件的全部代碼,并且能被ASPX頁(yè)面調(diào)用。

第四步:編碼ASP.NET測(cè)試頁(yè)

為了簡(jiǎn)單起見(jiàn),我們?nèi)匀皇褂米约旱奈谋揪庉嫵绦?,而不是Visual Studio.NET(VS.NET)工具。下面我們建立一個(gè)小小的測(cè)試頁(yè)(c:inetpubwwwrootquoteindex.aspx),僅有兩行代碼。

第一行:

  <%@ Register TagPrefix="CTL" Namespace="SantraQuote" Assembly="QuoteServiceControl" %>

請(qǐng)注意<%@ Register 后面的內(nèi)容。它的作用是注冊(cè)控件(DLL的文件名字)到指定的名字空間(SantraQuote),并且綁定到一個(gè)標(biāo)記前綴(CTL)。此標(biāo)記前綴可以任意命名,用于在表單中調(diào)用Web服務(wù)器控件。

第二行:

  <CTL:QuoteControl runat="server"/>

這一行就把我們的控件加到網(wǎng)頁(yè)中。

完整的代碼是:

  <%@ Register TagPrefix="CTL" Namespace="SantraQuote" Assembly="QuoteServiceControl" %>
  <html>
  <body>
   Random Quote:
   <CTL:QuoteControl runat="server" />
  </body>
  </html>

最后,我們?cè)赪eb瀏覽器中測(cè)試該頁(yè):在地址欄中輸入http://localhost/quote即可。第一次運(yùn)行時(shí),它會(huì)多花幾鐘進(jìn)行編譯,隨后將隨機(jī)地顯示引文。若點(diǎn)擊Reload刷新,則頁(yè)面顯示將大大加快。
接下來(lái),我們繼續(xù)討論如何在VS.NET環(huán)境中使用該控件。

第五步:在VS.NET中使用控件

首先,創(chuàng)建一個(gè)C# ASP.NET新工程“http://localhost/Quote.NET”。待IDE環(huán)境創(chuàng)建空白的新工程以后,我們就把組件加入工具箱(工具箱位于屏幕左邊):選擇Components,按右鍵,選擇Customize Toolbox,在.NET Framework Components里,點(diǎn)Browser,選中c:inetpubwwwrootbinQuoteServiceControl.dll。它將會(huì)在SantraQuote名字空間里找到兩個(gè)類(lèi),我們只需要其中的QuoteControl,故反選QuoteService,點(diǎn)OK?,F(xiàn)在可以看到QuoteControl出現(xiàn)在工具箱中。點(diǎn)擊它并且拖到Webform1.aspx頁(yè)面。此時(shí)控件立即開(kāi)始從Web服務(wù)讀取文本并產(chǎn)生輸出了。您也可以使用HTML面板進(jìn)行編輯和格式化輸出。測(cè)試前,把默認(rèn)Web窗體重新命名為“index.aspx”。完成編輯以后點(diǎn)Play按鈕。系統(tǒng)將自動(dòng)打開(kāi)一個(gè)IE窗口,并連接到我們的網(wǎng)頁(yè)。嗯,一切順利。關(guān)掉IE瀏覽器,返回IDE環(huán)境?,F(xiàn)在您已經(jīng)在VS.NET環(huán)境下構(gòu)建了演示控件。以后在http://localhost/Quote.NET/index.aspx 就可以看到它了!

小結(jié)

衷心希望本文讓您對(duì)Web控件有了一個(gè)基本認(rèn)識(shí),并且可以動(dòng)手構(gòu)造它了。如果您有任何疑問(wèn),請(qǐng)隨時(shí)與我們聯(lián)系。

發(fā)布:2007-03-25 10:27    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章: