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