摘要:介紹Web服務(wù)的基本概念、體系結(jié)構(gòu)與主要標(biāo)準(zhǔn),并通過具體的實例說明.NET平臺下基于VB.NET的Web服務(wù)的應(yīng)用模式。
關(guān)鍵詞:Web服務(wù);SOA;XML;VB.NET;ASP.NET
中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2009)05-1224-02
Web Services Technology and Application Pattern
LU Shou-dong
(Department of Computer And Information Management, Guangxi University of Finance and Economics, Nanning 530003, China)
Abstract: This paper introduces the basic concept, architecture and main standard of Web Services, and explains its application pattern base on VB.NET under .NET plat through the concrete example.
Key words: Web Services; SOA; XML; VB.NET; ASP.NET
Web服務(wù)是目前最為流行的應(yīng)用于Web環(huán)境中的分布式組件開發(fā)技術(shù),其實現(xiàn)平臺與開發(fā)工具有很多,如.NET、J2EE等。本文簡要介紹Web服務(wù)的基本概念、體系結(jié)構(gòu)與主要標(biāo)準(zhǔn),并通過具體的實例說明.NET平臺下基于VB.NET的Web服務(wù)的應(yīng)用模式。
1 Web服務(wù)技術(shù)簡介
1.1 Web服務(wù)的基本概念
Web服務(wù)(Web Services)是一種基于Internet標(biāo)準(zhǔn)協(xié)議或規(guī)范的可通過網(wǎng)絡(luò)進行發(fā)布、發(fā)現(xiàn)、調(diào)用的自描述的服務(wù)器端軟件組件,其目的主要是程序之間的交互,即主要由程序代碼而非最終用戶使用。
Web服務(wù)其實是一種部署在Web上的可編程訪問的對象。與DCOM、CORBA、RMI等使用特定于對象模型的專用協(xié)議的傳統(tǒng)組件技術(shù)不同,Web服務(wù)建立在HTTP、XML等普及、開放的標(biāo)準(zhǔn)協(xié)議之上,天生具有優(yōu)異的跨平臺特性,因此已成為在Web上構(gòu)建語言無關(guān)、松散耦合、可互操作的分布式應(yīng)用程序的理想平臺。
1.2 Web服務(wù)的體系結(jié)構(gòu)
Web服務(wù)基于面向服務(wù)架構(gòu)(Service-Oriented Architecture,SOA),其體系結(jié)構(gòu)如圖1所示,包括服務(wù)提供者(Service Provider)、服務(wù)請求者(Service Requester)、服務(wù)代理(Service Broker)3個主要角色以及相關(guān)的發(fā)布(Publish)、查找(Find)、綁定(Bind)3種操作。
服務(wù)提供者是Web服務(wù)的擁有者,負(fù)責(zé)對Web服務(wù)進行描述并將其發(fā)布到服務(wù)代理處。服務(wù)請求者是Web服務(wù)的使用者,可到服務(wù)代理處查找所需要的Web服務(wù)并獲取相應(yīng)的描述文檔,然后據(jù)此對Web服務(wù)進行綁定與調(diào)用。服務(wù)代理又稱為服務(wù)注冊中心,是一個邏輯上集中的目錄服務(wù),可在其中進行Web服務(wù)的發(fā)布、查找等操作。服務(wù)代理相當(dāng)于服務(wù)提供者與服務(wù)請求者的中介,當(dāng)服務(wù)請求者在服務(wù)代理處查找到所需要的Web服務(wù)后,后續(xù)的操作就只需在服務(wù)提供者與服務(wù)請求者之間進行。
1.3 Web服務(wù)的主要標(biāo)準(zhǔn)
Web服務(wù)基于一系列的標(biāo)準(zhǔn)協(xié)議或規(guī)范,其核心標(biāo)準(zhǔn)主要有3個,即SOAP、WSDL與UDDI。Web服務(wù)的基本協(xié)議棧如圖2所示,分為網(wǎng)絡(luò)傳輸、數(shù)據(jù)編碼、消息傳遞、服務(wù)描述與服務(wù)發(fā)現(xiàn)5層。
Web服務(wù)對于底層的傳輸協(xié)議沒有具體的限制,可使用各種Internet 傳輸協(xié)議,如HTTP、FTP、SMTP、MQ、BEEP等。其中,HTTP因其簡單性、廣泛性、穩(wěn)定性以及易于穿越防火墻的優(yōu)點,成為當(dāng)前Web服務(wù)的最佳傳輸方式。
XML即可擴展標(biāo)記語言(Extensible Markup Language),由W3C制定,是Web上的數(shù)據(jù)表示與交換標(biāo)準(zhǔn),不受操作系統(tǒng)與編程語言的限制,且已獲得廣泛的支持與應(yīng)用。因此,Web服務(wù)選用XML作為數(shù)據(jù)編碼的格式,并使用與之相關(guān)的XML Schema作為數(shù)據(jù)類型的標(biāo)準(zhǔn)。
SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),是一種基于XML的、簡單的、輕量級的通信協(xié)議,用于在客戶端與Web服務(wù)之間傳遞消息(包括請求消息與響應(yīng)消息)。
WSDL即Web服務(wù)描述語言(Web Service Description Language),是一種基于XML的用于對Web服務(wù)進行全面描述的標(biāo)準(zhǔn)語言。一個Web服務(wù)的功能接口、駐留地址、綁定方式等相關(guān)信息,均包含在其WSDL文檔中??蛻舳烁鶕?jù)WSDL文檔,即可實施對相應(yīng)Web服務(wù)的綁定與調(diào)用。
UDDI即通用發(fā)現(xiàn)、描述與集成(Universal Discovery, Description and Integration),是Web服務(wù)發(fā)布與發(fā)現(xiàn)的工業(yè)標(biāo)準(zhǔn),使用XML文檔來描述服務(wù)提供者及其所提供的Web服務(wù)。借助于UDDI注冊中心(公共的或私有的),服務(wù)提供者可通過注冊來發(fā)布其開發(fā)的Web服務(wù),服務(wù)請求者可通過查找來發(fā)現(xiàn)其需要的Web服務(wù)。
Web服務(wù)的上層標(biāo)準(zhǔn)都是基于XML的,因此具有與操作系統(tǒng)、編程語言無關(guān)的特性,從而為Web服務(wù)在異構(gòu)平臺上進行系統(tǒng)的集成與交互提供了充分的保證。由于XML是Web服務(wù)的基礎(chǔ),在Web服務(wù)中起著至關(guān)重要的作用,因此Web服務(wù)通常又稱為XML Web服務(wù)(XML Web Services)。
2 Web服務(wù)應(yīng)用實例
要在.NET平臺下開發(fā)Web服務(wù),須先配置好IIS,并安裝好.NET Framework。為提高開發(fā)效率,可使用Visual Studio .NET集成開發(fā)環(huán)境(IDE)。至于編程語言,則有多種選擇,如VB.NET、C#、C++等,在此選用VB.NET。
2.1 Web服務(wù)的創(chuàng)建
在站點根目錄下新建一個Web服務(wù)文件Calculator.asmx,代碼如下:
<% @WebService Language=\"VB\" class=\"Calculator\" %>
Imports System.Web.Services '引入Web服務(wù)所需要的命名空間
Public Class Calculator
'Web服務(wù)的Add方法
Return x+y
End Function
'Web服務(wù)的Minus方法
Return x-y
End Function
End Class
在此所創(chuàng)建的Web服務(wù)Calculator較為簡單,只有Add、Minus兩個方法,分別實現(xiàn)加法、減法運算。其中,第1行代碼說明該程序是一個Web服務(wù),編程語言為VB.NET,類名為Calculator。在Web服務(wù)中,要提供給客戶端使用的方法,均應(yīng)附帶WebMethod屬性,且聲明為Public。
Web服務(wù)創(chuàng)建完畢后,可在瀏覽器中輸入其URL地址http://localhost/Calculator.asmx進行測試。若在地址中的文件名后加上“?WSDL”,可直接查看其WSDL文檔。
2.2 Web服務(wù)的使用
Web服務(wù)的客戶端可以是任何類型的應(yīng)用程序,如Windows應(yīng)用程序、Web應(yīng)用程序、控制臺應(yīng)用程序、類庫以及其他Web服務(wù)等??蛻舳顺绦?qū)eb服務(wù)的訪問,其實是通過在客戶端生成的Web服務(wù)代理類進行的。在代理類中,包含有影射到Web服務(wù)所公開的功能的方法。下面,以創(chuàng)建ASP.NET Web應(yīng)用程序為例說明Web服務(wù)的使用方法。
1)使用Wsdl.exe(Visual Studio .NET中的一個命令行工具)生成Web服務(wù)Calculator的代理類源文件Calculator.vb,并指定其命名空間為LsdServices。命令如下:
wsdl http://localhost/Calculator.asmx?wsdl /l:VB /n:LsdServices
2)使用Vbc.exe(.NET Framework所提供的用于VB.NET的編譯器)將Calculator.vb編譯為動態(tài)鏈接庫Calculator.dll。命令如下:
vbc /out:Calculator.dll /t:library /r:system.xml.dll /r:system.data.dll /r:system.web.services.dll /r:system.dll Calculator.vb
3)將Calculator.dll置于站點根目錄下bin文件夾中,并在站點根目錄下創(chuàng)建Web程序WebCalculator.aspx,代碼如下。
<% @Page Language=\"VB\" Debug=\"true\" %>
<% @Import NameSpace=\"LsdServices\"%>
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim o_calculator As Calculator = New Calculator() '創(chuàng)建Web服務(wù)實例
Dim x As Double = System.Convert.ToDouble(TextBox_x.Text)
Dim y As Double = System.Convert.ToDouble(TextBox_y.Text)
Dim z As Double
z = o_calculator.Add(x, y) '調(diào)用Web服務(wù)方法
TextBox_add.Text = System.Convert.ToString(z)
z = o_calculator.Minus(x, y) '調(diào)用Web服務(wù)方法
TextBox_minus.Text = System.Convert.ToString(z)
End Sub
創(chuàng)建好程序后,即可在瀏覽器中輸入其URL地址http://localhost/WebCalculator.aspx運行之,并實現(xiàn)對Web服務(wù)的調(diào)用(如圖3所示)。
3 結(jié)束語
與其他分布式計算技術(shù)相比,Web服務(wù)具有極大的優(yōu)越性,其應(yīng)用前景是十分廣闊的,也是業(yè)界公認(rèn)的未來計算機技術(shù)發(fā)展中的一個關(guān)鍵部分。微軟的.NET平臺為Web服務(wù)的開發(fā)與應(yīng)用提供了強大的支持。若使用Visual Studio .NET,還可進一步簡化Web服務(wù)的創(chuàng)建與使用步驟。例如,在客戶端程序的設(shè)計過程中,通過添加Web引用,即可自動完成Web服務(wù)代理類的創(chuàng)建過程。
參考文獻:
[1] 石國志..NET Web服務(wù)實用案例教程[M].北京:清華大學(xué)出版社,2004.
[2] 佛里曼,瓊斯.Microsoft .NET XML Web服務(wù)程序設(shè)計[M].向璐,向祚鐵,譯.北京:清華大學(xué)出版社,2003.