當前位置:工程項目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊
利用自定義Web控件構(gòu)造XML網(wǎng)絡(luò)服務(wù)應(yīng)用
利用自定義Web控件構(gòu)造XML網(wǎng)絡(luò)服務(wù)應(yīng)用
本文將要告訴您:在全新的.NET平臺上,利用自定義Web控件來使用XML網(wǎng)絡(luò)服務(wù)是多么簡單。
什么是自定義Web控件?讓我們來看看微軟的解釋:“Web控件運行在Web服務(wù)器上,它包括表單控制(例如:按鈕和文本框等)和某些特殊用途的控件(例如:日歷控件等)。因此,Web控件允許您通過編程控制這些網(wǎng)頁元素。Web控件比HTML控件更加抽象,故它的目標模型不受HTML語法的限制”(原文見http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIWebControls.asp)。
稍后我們將利用Web控件在網(wǎng)頁上顯示一些文本。
微軟對“XML網(wǎng)絡(luò)服務(wù)”所下的定義是:“遵循標準的Internet協(xié)議,存在于Web服務(wù)器上的可編程實體”(原文見http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWebServices.asp)。
現(xiàn)在來創(chuàng)建一個簡單的Web服務(wù)器控件,它的功能是從可擴展標示語言(XML)網(wǎng)絡(luò)服務(wù)中讀取文本,并且顯示在網(wǎng)頁上;所用的工具是在DOS方式下的一個簡單的文本編輯器。這個例子非常實用,因為Web服務(wù)器控件是一個獨立的軟件包。您只需要發(fā)布編譯過的DLL文件,而用戶只需用鼠標把控件拖放到目標網(wǎng)頁即可,余下的工作全部由控件來完成。這樣,大多數(shù)Web應(yīng)用都可以實現(xiàn)高度的模塊化,因為所有的繁瑣工作都被封裝到控件內(nèi)部了。
第一步:取得數(shù)據(jù)
現(xiàn)在市場上有許多優(yōu)秀的XML網(wǎng)絡(luò)服務(wù)可供選擇。我將選擇一種能產(chǎn)生引文(出自名家或非名家之筆)的Web服務(wù)供本文使用。因此我們的第一任務(wù),就是要選定最合適的XML網(wǎng)絡(luò)服務(wù)。候選的公共Web服務(wù)有三個:
1.SANTRA Technology的iON服務(wù) - http://www.mysantra.com
2.XMethods的Web服務(wù) - http://www.xmethods.com
3.Sal
Services的Web服務(wù)經(jīng)紀人 - http://www.salcentral.com
我個人偏愛http://www.mysantra.com,因為它提供許多高級功能:監(jiān)聽、警示、運行時間統(tǒng)計等,還有便利的比較功能。我們將要用到的內(nèi)容是Santra經(jīng)過反復(fù)搜索和比較之后才提供的。在Santra服務(wù)詳情(http://www.mysantra.com/MyService_Details.asp?service_id=358)里還包含WSDL文件的地址,現(xiàn)在把這個路徑復(fù)制到剪貼板里,在工程里將用它來建立Web服務(wù)引用。
第二步:準備工作
首先,創(chuàng)建工程文件夾,例如“c:inetpubWebControlsQuote”,導(dǎo)入Web服務(wù)引用。
然后,點擊Start->Run,鍵入cmd,回車,切換到工程所在目錄(cd
c:inetpubWebControlsQuote),現(xiàn)在我們可以導(dǎo)入Web服務(wù)了。
在.NET框架里,有一個便利的公用程序wsdl.exe。
Web服務(wù)描述語言
(WSDL)工具為ASP.NET的Web服務(wù)生成代碼,位于WSDL的客戶端讀取文件、XSD
schema和.discomap發(fā)現(xiàn)文件(譯者注:發(fā)現(xiàn)文件是包含所有可用Web服務(wù)摘要的XML文件)。(參見http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfwebservicesdescriptionlanguagetoolwsdlexe.asp)。wsdl.exe能與disco.exe聯(lián)用。
鍵入wsdl/?可以得到wsdl.exe的簡單幫助信息(完整的描述已經(jīng)超出本文范圍)。這里用到的命令非常簡單:
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'.
通過這條命令,我們將在名字空間SantraQuote下使用我們給出的URL提供的XML網(wǎng)絡(luò)服務(wù)生成一個代理服務(wù)類,相應(yīng)的類文件QuoteService.cs將被自動生成。
現(xiàn)在把我們的Web控件代碼加到代理服務(wù)類中。為什么要把代碼直接加進去?固然,其他Web服務(wù)程序可以通過定義另外的名字空間和類,并且引用代理服務(wù)類實現(xiàn)復(fù)用;但是,我們要發(fā)布的是單個自我包含的DLL文件,因此我們把控件代碼全部封裝到同一個文件和名字空間里。
第三步:編碼Web控件
在我們的QuoteService.cs文件里面有許多代碼用于加工XML網(wǎng)絡(luò)服務(wù)提供的內(nèi)容,不管它。首先,為名字空間UI和WebControls建立引用:
using System.Web.UI;
using System.Web.UI.WebControls;
然后,增加一個QuoteControl類,它只有一個方法(Render),其功能是調(diào)用QuoteService類的“Quote”方法:
public class QuoteControl : Control {
QuoteService QS = new
QuoteService();
protected override void Render( HtmlTextWriter writer) {
writer.Write(QS.Quote());
}
}
現(xiàn)在,我們可以編譯名字空間了。在DOS提示狀態(tài)下,我們將會使用 C#編譯器csc。在編譯以前,先看看它的幫助信息(csc
/?)。本例我們僅僅用到一個命令:
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.
這個結(jié)果代表編譯成功。如果發(fā)生任何錯誤,它將會有詳細的解釋,并指出錯誤在哪里。因此,通過簡單的調(diào)試,控件就能通過編譯了。
命令行中的/t參數(shù)用來指定目標類型,我們用的是library,以便應(yīng)用于其他工程;此外,我們還用了/out:參數(shù)指定DLL文件名(QuoteServiceControl.dll)和目標路徑(本例在Web根目錄下的bin子目錄)。
忙了大半天,最終得到了什么?呃,請看看Web根目錄下的bin子目錄,您會發(fā)現(xiàn)QuoteServiceControl.dll這個文件,它包含了我們的Web服務(wù)器控件的全部代碼,并且能被ASPX頁面調(diào)用。
第四步:編碼ASP.NET測試頁
為了簡單起見,我們?nèi)匀皇褂米约旱奈谋揪庉嫵绦?,而不是Visual Studio.NET(VS.NET)工具。下面我們建立一個小小的測試頁(c:inetpubwwwrootquoteindex.aspx),僅有兩行代碼。
第一行:
<%@ Register TagPrefix="CTL" Namespace="SantraQuote" Assembly="QuoteServiceControl" %>
請注意<%@ Register 后面的內(nèi)容。它的作用是注冊控件(DLL的文件名字)到指定的名字空間(SantraQuote),并且綁定到一個標記前綴(CTL)。此標記前綴可以任意命名,用于在表單中調(diào)用Web服務(wù)器控件。
第二行:
<CTL:QuoteControl runat="server"/>
這一行就把我們的控件加到網(wǎng)頁中。
完整的代碼是:
<%@ Register TagPrefix="CTL" Namespace="SantraQuote"
Assembly="QuoteServiceControl" %>
<html>
<body>
Random Quote:
<CTL:QuoteControl runat="server" />
</body>
</html>
最后,我們在Web瀏覽器中測試該頁:在地址欄中輸入http://localhost/quote即可。第一次運行時,它會多花幾鐘進行編譯,隨后將隨機地顯示引文。若點擊Reload刷新,則頁面顯示將大大加快。
接下來,我們繼續(xù)討論如何在VS.NET環(huán)境中使用該控件。
第五步:在VS.NET中使用控件
首先,創(chuàng)建一個C# ASP.NET新工程“http://localhost/Quote.NET”。待IDE環(huán)境創(chuàng)建空白的新工程以后,我們就把組件加入工具箱(工具箱位于屏幕左邊):選擇Components,按右鍵,選擇Customize Toolbox,在.NET Framework Components里,點Browser,選中c:inetpubwwwrootbinQuoteServiceControl.dll。它將會在SantraQuote名字空間里找到兩個類,我們只需要其中的QuoteControl,故反選QuoteService,點OK?,F(xiàn)在可以看到QuoteControl出現(xiàn)在工具箱中。點擊它并且拖到Webform1.aspx頁面。此時控件立即開始從Web服務(wù)讀取文本并產(chǎn)生輸出了。您也可以使用HTML面板進行編輯和格式化輸出。測試前,把默認Web窗體重新命名為“index.aspx”。完成編輯以后點Play按鈕。系統(tǒng)將自動打開一個IE窗口,并連接到我們的網(wǎng)頁。嗯,一切順利。關(guān)掉IE瀏覽器,返回IDE環(huán)境?,F(xiàn)在您已經(jīng)在VS.NET環(huán)境下構(gòu)建了演示控件。以后在http://localhost/Quote.NET/index.aspx 就可以看到它了!
小結(jié)
衷心希望本文讓您對Web控件有了一個基本認識,并且可以動手構(gòu)造它了。如果您有任何疑問,請隨時與我們聯(lián)系。
- 1中國軍隊軍事訓(xùn)練從機械化向信息化轉(zhuǎn)變
- 2一頁紙上的IT治理(AMT研究院 黃慶揚 編譯)
- 3OA辦公系統(tǒng)硬件網(wǎng)絡(luò)配置條件
- 4建立企業(yè)級項目管理體系的步驟
- 5服務(wù)器托管常見問題糾紛與解決方法
- 6IT基礎(chǔ)設(shè)施庫ITIL的力量:ITIL介紹及應(yīng)用案例(三)(AMT 張純棣 編譯)
- 7ITIL實施的難度
- 8OA辦公軟件系統(tǒng)未來的“適用性與實用性”增加
- 9婦幼衛(wèi)生信息化:邊緣突進“一盤棋”
- 10城市商業(yè)銀行 核心業(yè)務(wù)升級不容易
- 11ITIL V3的出現(xiàn)改變了什么
- 12提供云計算服務(wù) 從行業(yè)應(yīng)用開始
- 13電子紅娘:盈利“甜蜜蜜”
- 14信用卡網(wǎng)上支付小心“陷阱”
- 15基于數(shù)據(jù)挖掘的企業(yè)競爭情報系統(tǒng)分析
- 16用實踐消除與ITSM的距離感
- 17物流的核心——倉儲信息化
- 18中國IT治理和風(fēng)險管理的現(xiàn)狀、挑戰(zhàn)和對策
- 19金融信息化有序發(fā)展必經(jīng)之道
- 20專家答疑:對SaaS都有哪五種常見誤解
- 21電子政務(wù)在構(gòu)建和諧政府中的作用
- 22如何對終端零售店進行銷售管理
- 23Gartner:IT支出下滑甚于網(wǎng)絡(luò)泡沫破滅期
- 24做客戶的思想工作很重要,不能盲目的按照客戶的要求來做
- 25Web services協(xié)調(diào) 只聞樓梯響
- 26醫(yī)療行業(yè)信息化的九大趨勢
- 27IT基礎(chǔ)設(shè)施庫ITIL的力量:ITIL介紹及應(yīng)用案例(二)(AMT 張純棣 編譯)
- 28什么時候應(yīng)該使用Web Service
- 29業(yè)內(nèi)人士認為網(wǎng)絡(luò)服務(wù)是2002年IT熱點
- 30構(gòu)建一個有效的企業(yè)級SOA治理
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114