白彥輝,王文利,黃 謙
(1.赤峰學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,內(nèi)蒙古 赤峰 024000;2.赤峰市煙草公司,內(nèi)蒙古 赤峰 024000)
具有身份驗(yàn)證的文件傳輸Web Service應(yīng)用研究
白彥輝1,王文利1,黃 謙2
(1.赤峰學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,內(nèi)蒙古 赤峰 024000;2.赤峰市煙草公司,內(nèi)蒙古 赤峰 024000)
Web服務(wù)是一種面向服務(wù)的架構(gòu)的技術(shù),通過標(biāo)準(zhǔn)的Web協(xié)議提供服務(wù),目的是保證不同平臺(tái)的應(yīng)用服務(wù)可以互操作.本文通過對(duì)Web服務(wù)的研究,分析了Web服務(wù)的基本原理,基于.NET開發(fā)技術(shù),介紹了一個(gè)具有身份驗(yàn)證功能的文件傳輸Web服務(wù)軟件的設(shè)計(jì)過程,軟件實(shí)現(xiàn)了從客戶端登錄后使用Web服務(wù)功能獲取服務(wù)器端文件的功能.
Web服務(wù);身份驗(yàn)證;.NET
Web服務(wù)就是Web Service,是一個(gè)建立可互操作的分布式應(yīng)用程序的新平臺(tái)[1].它是一套標(biāo)準(zhǔn),定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性,是在Internet上進(jìn)行分布式計(jì)算的基本構(gòu)造塊.Web Service在具體實(shí)現(xiàn)時(shí),定義可能有多種,但都應(yīng)具有以下共同點(diǎn):
(1)Web Service通過標(biāo)準(zhǔn)的Web協(xié)議向Web用戶提供有用的功能.多數(shù)情況下使用SOAP協(xié)議.
(2)Web Service可以非常詳細(xì)地說明其接口,這使用戶能夠創(chuàng)建客戶端應(yīng)用程序與它們進(jìn)行通信.這種說明通常包含在稱為Web服務(wù)說明語(yǔ)言(WSDL)文檔的XML文檔中.
(3)Web Service要經(jīng)過注冊(cè),以便潛在用戶能夠輕易地找到這些服務(wù),這是通過通用發(fā)現(xiàn)、說明和集成(UDDI)來完成的.
Web Service在最終實(shí)現(xiàn)時(shí),需要使用遠(yuǎn)程過程調(diào)用協(xié)議RPC,為了達(dá)到互操作性,RPC協(xié)議與平臺(tái)和編程語(yǔ)言無(wú)關(guān).
Web Service是由許多與平臺(tái)無(wú)關(guān)的、可自我描述的協(xié)議構(gòu)成的,它的實(shí)現(xiàn)基于XML、SOAP、WSDL和UDDI這樣一些基礎(chǔ)協(xié)議.
可擴(kuò)展的標(biāo)記語(yǔ)言(XML)是Web service平臺(tái)中表示數(shù)據(jù)的基本格式.除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺(tái)無(wú)關(guān)的.XML解決了數(shù)據(jù)表示的問題,但它沒有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,也沒有說怎么去擴(kuò)展這套數(shù)據(jù)類型.例如,整形數(shù)到底代表什么?16位,32位,還是64位?這些細(xì)節(jié)對(duì)實(shí)現(xiàn)互操作性都是很重要的.
W3C制定的XML Schema(XSD)定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語(yǔ)言來擴(kuò)展這套數(shù)據(jù)類型.Web service平臺(tái)就是用XSD來作為其數(shù)據(jù)類型系統(tǒng)的.當(dāng)使用某種語(yǔ)言來構(gòu)造一個(gè) Web service時(shí),為了符合Web service標(biāo)準(zhǔn),所有被使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型.雖然開發(fā)工具可能會(huì)自動(dòng)完成這個(gè)轉(zhuǎn)換,但仍可能會(huì)根據(jù)需要去修改轉(zhuǎn)換過程.
SOAP(Simple Object Access Protocal,簡(jiǎn)單對(duì)象訪問協(xié)議)是一個(gè)基于XML的在分散或分布式環(huán)境中實(shí)現(xiàn)信息交換的簡(jiǎn)單協(xié)議,是一種輕量的、簡(jiǎn)單的、基于XML的協(xié)議,它被設(shè)計(jì)成在WEB上交換結(jié)構(gòu)化的和固化的信息.Web service建好以后,需要用戶或者開發(fā)人員去調(diào)用它.簡(jiǎn)單對(duì)象訪問協(xié)議 (SOAP)提供了標(biāo)準(zhǔn)的RPC方法來調(diào)用Web service.SOAP規(guī)范定義了SOAP消息的格式,以及怎樣通過HTTP協(xié)議來使用SOAP.SOAP也是基于XML和XSD的, XML是SOAP的數(shù)據(jù)編碼方式.
WSDL(Web Services Description Language)表示W(wǎng)eb服務(wù)說明語(yǔ)言,它是基于XML的語(yǔ)言,用于描述Web service及其函數(shù)、參數(shù)和返回值.因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個(gè)很大的好處.一些最新的開發(fā)工具既能根據(jù)Web service生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)Web service的代碼.
UDDI(Universal Description,Discovery and Integration,通用發(fā)現(xiàn)、說明和集成)的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的Web Service注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn).
使用ASP.NET創(chuàng)建XML Web Service是一件非常容易的事情,使用ASP.NET創(chuàng)建Web Service時(shí),它自動(dòng)支持使用SOAP、HTTP-GET和HTTP-POST協(xié)議與客戶通信.同時(shí)asp.ent會(huì)自動(dòng)定義對(duì)應(yīng)的XSD Schema,并把相應(yīng)的對(duì)象對(duì)應(yīng)到XML中.創(chuàng)建過程需要三個(gè)步驟:
(1)創(chuàng)建.asmx文件.
(2)在文件中用標(biāo)簽聲明此文件用于Web Service.
(3)定義Web Service Method把 Web Service的功能暴露給用戶.
文件傳輸Web服務(wù)包含兩個(gè)組成部分:服務(wù)器端和客戶端.在.NET環(huán)境中建立一個(gè)Web Service項(xiàng)目FileService,其中包括一個(gè)類文件Authentication.cs,用于實(shí)現(xiàn)服務(wù)器端的身份驗(yàn)證.客戶端是一個(gè)Windows Form項(xiàng)目WebServiceTerminal,包含兩個(gè)窗體:TerminalFrom和ManageForm.
Authentcation類是FileService Web服務(wù)中的重要組成部分,它的功能是為Web服務(wù)提供認(rèn)證,實(shí)現(xiàn)訪問控制.系統(tǒng)中需要認(rèn)證的信息存放在XML文檔中,初始的XML文檔如下.
users是根節(jié)點(diǎn),字節(jié)點(diǎn)有兩種類型:user和admin,用戶名和密碼通過name和password屬性存放.在Authentcation類中包含了ValidateUser、ValidateAdmin、ChangePassword、AddUser四個(gè)方法,用戶實(shí)現(xiàn)用戶驗(yàn)證、管理員驗(yàn)證、修改密碼和添加用戶.ValidateUser和ValidateAdmin方法的主要代碼如下:
FileService類是Web Service服務(wù)的整體,在這個(gè)類中定義了所有的Web Method方法,包括GetFile、ChangePassword、AddUser和 GetList四個(gè)方法.其中GetFile和GetList方法用于返回服務(wù)器端文件和文件列表,定義如下.
//文件獲取方法
運(yùn)行服務(wù)器端代碼,記錄FileService.asmx文件的運(yùn)行地址.
在客戶端程序中需要添加對(duì)已完成Web服務(wù)的引用.通過在瀏覽器中給出FileService.asmx的地址,單擊“Add Reference”來添加對(duì)當(dāng)前web服務(wù)的引用.被引用的Web服務(wù)會(huì)出現(xiàn)在WebServiceTerminal項(xiàng)目中.
在這個(gè)部分中,實(shí)現(xiàn)了對(duì)客戶端對(duì)FileService中函數(shù)功能的調(diào)用,同時(shí)實(shí)現(xiàn)了文件傳輸任務(wù),代碼略過.
Web Service的主要目標(biāo)是跨平臺(tái)的可互操作性.為了達(dá)到這一目標(biāo),Web Service完全基于XML(可擴(kuò)展標(biāo)記語(yǔ)言)、XSD(XML Schema)等獨(dú)立于平臺(tái)、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn),是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺(tái).從本文實(shí)例中可以看出,.NET環(huán)境為用戶提供了一整套的Web Service解決方案,在開發(fā)中涉及的數(shù)據(jù)層、中間層、到表現(xiàn)層,.NET都有功能強(qiáng)大的開發(fā)工具和組件,為Web Service的開發(fā)提供了極大的便利.
〔1〕黃承安.C#網(wǎng)絡(luò)應(yīng)用案例導(dǎo)航[M].北京:中國(guó)鐵道出版社,2003.
〔2〕張曉芬.基于SOAP的CBM系統(tǒng)通信模型設(shè)計(jì)與實(shí)現(xiàn) [J].沈陽(yáng)師范大學(xué)學(xué)報(bào) (自然科學(xué)版),2011,29(1):77-81.
〔3〕林川.基于UDDI和WSDL的Web服務(wù)發(fā)布方案[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(4):993-995.
〔4〕芮雄健,王忠民.UDDI的原理與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(6):1602-1605.
TP393.08
A
1673-260X(2012)02-0050-03