王金環(huán) 李寶敏 李艷
摘 要:Web Services是下一代分布式系統(tǒng)的核心,是發(fā)布在網(wǎng)絡(luò)上并提供API以供其他程序調(diào)用的封裝的實(shí)體,是在網(wǎng)絡(luò)上進(jìn)行分布式計(jì)算的基本構(gòu)造塊。Web Services也是描述了某些操作的接口,該接口隱藏了服務(wù)實(shí)現(xiàn)的細(xì)節(jié),允許應(yīng)用程序通過(guò)獨(dú)立于服務(wù)實(shí)現(xiàn)、獨(dú)立于硬件或軟件平臺(tái)、獨(dú)立于編寫服務(wù)所用的編程語(yǔ)言的方式使用該服務(wù)。本文重點(diǎn)介紹了Web Services,通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的Web服務(wù),將SQLServer2005服務(wù)器中的Sender數(shù)據(jù)庫(kù)中Sender_User表中的用戶信息暴露給客戶端,通過(guò)GetProducts()方法返回一個(gè)數(shù)據(jù)集供客戶端使用,實(shí)現(xiàn)Web服務(wù)的調(diào)用為例,實(shí)現(xiàn)了在當(dāng)前環(huán)境下最高的可集成性,為許多廠商提供大量的免費(fèi)工具來(lái)快速生成和部署Web Services,比較容易實(shí)現(xiàn)。
關(guān)鍵詞:Web Services;封裝;實(shí)體;接口
中圖分類號(hào):TP393.02
1 Web Service概述
1.1 典型的Web Service結(jié)構(gòu)
一般過(guò)程是,Web Service提供者使用合適的編程語(yǔ)言和開(kāi)發(fā)工具開(kāi)發(fā)并部署Web Service,客戶應(yīng)用程序根據(jù)Web Service的WSDL服務(wù)描述文檔中的信息生成一個(gè)SOAP請(qǐng)求消息來(lái)調(diào)用這個(gè)Web Service。通常Web Service都是位于Web服務(wù)器(如IIS、Apache等)的后面,客戶端生成的SOAP請(qǐng)求會(huì)被嵌入在一個(gè)HTTPPOST請(qǐng)求中,發(fā)送到Web服務(wù)器,Web服務(wù)器在把這些請(qǐng)求轉(zhuǎn)發(fā)給Web Service請(qǐng)求處理器(Request Handler)。收到消息后,Web Service請(qǐng)求處理器就會(huì)解析SOAP請(qǐng)求,然后再生成相應(yīng)的SOAP響應(yīng)信息。Web服務(wù)器得到SOAP應(yīng)答后,在通過(guò)HTTP方式回送給客戶端。
1.2 Web Service體系結(jié)構(gòu)
Web Service體系結(jié)構(gòu)是基于三種角色(服務(wù)提供者、服務(wù)注冊(cè)中心和服務(wù)請(qǐng)求者)之間的交互。這些角色和操作一起作用于Web服務(wù)構(gòu)件:Web服務(wù)軟件模塊及其描述。服務(wù)提供者定義Web服務(wù)的服務(wù)描述并把它發(fā)布到服務(wù)請(qǐng)求者或服務(wù)注冊(cè)中心。服務(wù)請(qǐng)求者使用查找操作來(lái)從本地或服務(wù)注冊(cè)中心檢索服務(wù)描述,然后使用服務(wù)描述與服務(wù)提供者綁定,并調(diào)用Web Service實(shí)現(xiàn)或同它交互。
2 應(yīng)用實(shí)現(xiàn)
(1)用.NET2005創(chuàng)建新的網(wǎng)站“Web Services”
(2)右鍵“解決方案管理器”創(chuàng)建新的Web服務(wù),取名為Products
(3)打開(kāi)Products.cs。要使用SQLServer提供的數(shù)據(jù)庫(kù)系統(tǒng)服務(wù),需要在文件頭添加引用System.Data和System.Data.SqlClient命名空間
(4)在Products類中添加GetProducts方法,其代碼如下
usingSystem;usingSystem.Web;usingSystem.Collections;usingSystem.Web.Services;usingSystem.Web.Services.Protocols;usingSystem.Data;usingSystem.Data.SqlClient;
[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassProducts:System.Web.Services.Web Service
{publicProducts(){}[WebMethod(Description="返回用戶列表")]
publicDataSetGetProducts()
{SqlConnectionconn;
SqlDataAdaptermyDataAdapter;DataSetmyDataSet=newDataSet();
//打開(kāi)數(shù)據(jù)庫(kù)連接conn=newSqlConnection("DataSource=(local);InitialCatalog=Northwind;IntegratedSecurity=True");stringcmd="Select*FromProducts";myDataAdapter=newSqlDataAdapter(cmd,conn);//填充myDataSet,并將其返回myDataAdapter.Fill(myDataSet,"Products");returnmyDataSet;
(5)測(cè)試Web服務(wù)Products,單擊Get Products方法的超鏈接(如圖1),單擊“調(diào)用”按鈕,可以得到由Get Products方法返回的數(shù)據(jù)集轉(zhuǎn)換而來(lái)的XML文檔。
圖1 GetProducts方法的超鏈接
接下來(lái),需要把GetProducts方法返回的數(shù)據(jù)集結(jié)果用于ASP.NET2.0創(chuàng)建的應(yīng)用程序,以便對(duì)這些數(shù)據(jù)進(jìn)行進(jìn)一步的加工處理。打開(kāi)該網(wǎng)站的Default.aspx切換到設(shè)計(jì)視圖,在Web窗體中添加一個(gè)Button控件和一個(gè)GridView控件
(6)在網(wǎng)站中添加Web引用,在URL框中輸入ProductsWeb服務(wù)的地址,本例為http://localhost:2624/Web Services/Web Services.asmx,默認(rèn)其中Web引用名為L(zhǎng)ocalhost。
(7)雙擊“獲取服務(wù)”按鈕,添加Button_Click方法,其代碼如下。
protectedvoidButton1_Click(objectsender,EventArgse)
{//實(shí)例化Products代理對(duì)象
localhost.Productsws=newlocalhost.Products();
//調(diào)用GetProducts()方法,將其結(jié)果賦值給GridView1的DataSource
GridView1.DataSource=ws.GetProducts();
GridView1.DataBind(); //數(shù)據(jù)綁定
(8)保存并運(yùn)行網(wǎng)站。單擊“獲取服務(wù)”按鈕系統(tǒng)運(yùn)行。
3 總結(jié)
Web Services所有公共的協(xié)約都使用開(kāi)放的標(biāo)準(zhǔn)協(xié)議進(jìn)行描述、傳輸和交換,完全屏蔽了不同軟件平臺(tái)的差異,各種技術(shù)都可通過(guò)標(biāo)準(zhǔn)的協(xié)議進(jìn)行互操作,實(shí)現(xiàn)了在當(dāng)前環(huán)境下最高的可集成性。Web Services不像現(xiàn)有的分布式計(jì)算系統(tǒng)具有復(fù)雜接口,許多廠商提供大量的免費(fèi)工具來(lái)快速生成和部署Web Services,比較容易實(shí)現(xiàn)。
參考文獻(xiàn):
[1]祝建江.基于NETWeb Service的多層分布式體系機(jī)構(gòu)的研究于應(yīng)用[J].浙江工業(yè)大學(xué)學(xué)報(bào),2006,5:56-58.
[2]周剛.Web服務(wù)解決方案分析[J].天津理工學(xué)院學(xué)院:計(jì)算機(jī)工程,2006,2:36-38.
[3]間新慶,李文鋒,陳定方.Web服務(wù)的體系結(jié)構(gòu)和應(yīng)用[J].武漢理工大學(xué)學(xué)報(bào),2002,3:52-54.
[4](美)DanWahlin.ASP.NET2.0AJAX高級(jí)編程[M].2008.
[5](美)里克特,李建忠..NET框架程度設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.
[6]鄒建峰,周建峰,項(xiàng)細(xì)威.C#企業(yè)開(kāi)發(fā)案例精解[M].北京:人民郵電出版社,2006.
作者簡(jiǎn)介:王金環(huán)(1979-),女,山東菏澤人,助教,碩士研究生,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)與語(yǔ)義網(wǎng);李寶敏,教授,碩士生導(dǎo)師,研究方向?yàn)橛?jì)算機(jī)系統(tǒng)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)與語(yǔ)義網(wǎng);李艷,講師,碩士研究生,研究方向是計(jì)算機(jī)應(yīng)用技術(shù)。
作者單位:西安培華學(xué)院,西安 710125
計(jì)算機(jī)光盤軟件與應(yīng)用2013年14期