謝振華
摘要:為適應(yīng)信息技術(shù)的發(fā)展,web信息系統(tǒng)已經(jīng)從單一的系統(tǒng)發(fā)展成了分布式系統(tǒng),在分布式系統(tǒng)中,為實(shí)現(xiàn)web信息系統(tǒng)之間的信息共享與信息查詢,webservice技術(shù)應(yīng)運(yùn)而生了。Webservcie技術(shù)的出現(xiàn),不僅解決了相同平臺(tái)之間的數(shù)據(jù)共享,而且也解決了異構(gòu)平臺(tái)之間的數(shù)據(jù)共享。該文將先從概述開始介紹webservice技術(shù)及其特點(diǎn),然后從webservcie技術(shù)原理來(lái)介紹webservcie技術(shù)本質(zhì),最后以C#平臺(tái)為例,來(lái)介紹webservcie開發(fā)過(guò)程。
關(guān)鍵詞:Webservice;wsdl;服務(wù)引用
中圖分類號(hào):TP393 ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)13-0060-01
1 背景
互聯(lián)網(wǎng)的迅速發(fā)展,使得web信息系統(tǒng)的功能要求越來(lái)越多,響應(yīng)速度越來(lái)越快,為解決這些問(wèn)題,web信息系統(tǒng)也朝著分布式web系統(tǒng)方向發(fā)展了?;趙eb系統(tǒng)之間信息共享,面向服務(wù)開發(fā)的webservice技術(shù)也就應(yīng)運(yùn)而生了。
2 webService技術(shù)概述
Webservice是一個(gè)平臺(tái)獨(dú)立,低耦合的,可編程的web應(yīng)用服務(wù)。一個(gè)web項(xiàng)目可以通過(guò)webservice對(duì)外發(fā)布一個(gè)特定服務(wù),讓其他的web項(xiàng)目調(diào)用該服務(wù),獲得該web項(xiàng)目的數(shù)據(jù)資源,就如調(diào)用本項(xiàng)目的數(shù)據(jù)資源一樣。Webservice可以應(yīng)用在同一個(gè)平臺(tái)的不同服務(wù)器之間進(jìn)行數(shù)據(jù)調(diào)用,也可以應(yīng)用在不同平臺(tái)的服務(wù)器之間進(jìn)行數(shù)據(jù)調(diào)用。目前,很多的web平臺(tái)的分布式系統(tǒng)開發(fā),都運(yùn)用了webservice技術(shù)。
3 Webservice技術(shù)原理
Webservice主要是采用xml,soap和wsdl三大技術(shù)來(lái)實(shí)現(xiàn)分布式的web開發(fā)。WebService客戶端和服務(wù)器之間通過(guò)http協(xié)議進(jìn)行數(shù)據(jù)傳輸,http協(xié)議中的數(shù)據(jù)內(nèi)容采用xml格式進(jìn)行封裝,http協(xié)議中的消息頭及其xml內(nèi)容格式就是soap協(xié)議規(guī)定的,soap協(xié)議進(jìn)一步規(guī)范了webservice客戶端和服務(wù)器端之間的數(shù)據(jù)傳輸。Wsdl是網(wǎng)絡(luò)服務(wù)描述語(yǔ)言,用于描述Web服務(wù)發(fā)布的XML格式語(yǔ)言。Wsdl就像一個(gè)說(shuō)明書,用來(lái)描述服務(wù)及其服務(wù)相關(guān)的方法、參數(shù)和返回值。webservice服務(wù)器通過(guò)該wsdl文件說(shuō)明有哪些服務(wù)對(duì)外提供服務(wù),webservice客戶端通過(guò)一個(gè)URL地址就可以訪問(wèn)到它,從而可以調(diào)用對(duì)外服務(wù)的方法。Webservice服務(wù)器對(duì)外提供服務(wù),就必須暴露wsdl文件地址,只有能訪問(wèn)到wsdl文件的客戶端,才能調(diào)用webservice服務(wù)器提供的服務(wù)方法。接下來(lái),采用以下流程圖(圖1)來(lái)進(jìn)一步說(shuō)明webservice的技術(shù)原理。
4 webservice實(shí)現(xiàn)c#平臺(tái)開發(fā)過(guò)程
在c#開發(fā)平臺(tái)上創(chuàng)建兩個(gè)web項(xiàng)目,讓一個(gè)web項(xiàng)目作webservice服務(wù)器,另一個(gè)web項(xiàng)目做webservice客戶端。在webservice服務(wù)器上創(chuàng)建一個(gè)webservice服務(wù),偽代碼如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService1 : System.Web.Services.WebService {
[WebMethod]
Private ?ObjectService ?objs;
public string ?method1() {
objs=new ObjectService();
return objs.getMethod();
}
}
通過(guò)以上的步驟,webservice服務(wù)器就創(chuàng)建好了一個(gè)webservice服務(wù),其中偽代碼中的[WebMethod]注解用于說(shuō)明,該方法是對(duì)外發(fā)布的方法,可以讓其他的web項(xiàng)目來(lái)調(diào)用。在webservice客戶端上調(diào)用webservice服務(wù),需要在客戶端的web項(xiàng)目中添加服務(wù)引用。添加服務(wù)引用,其實(shí)就是告訴webservice客戶端的服務(wù)地址,地址格式是:http://ip地址:端口號(hào)/ WebService.asmx 。接下來(lái),在webservice客戶端就可以調(diào)用說(shuō)添加的服務(wù)引用,偽代碼如下:
ServiceReference1.WebService1SoapClient obj = new ServiceReference1.WebService1SoapClient();
obj.method1()
其中ServiceReference1客戶端中服務(wù)引用的名稱,WebService1是webService服務(wù)器對(duì)外提供的服務(wù)名稱。
從以上的C#平臺(tái)開發(fā)過(guò)程中,不難看出對(duì)外的WebService1服務(wù)類的方法調(diào)用自身項(xiàng)目的service層,webservcie客戶端的應(yīng)用層就直接通過(guò)服務(wù)引用調(diào)用WebService1的方法,就好像webservcie客戶端的應(yīng)用層調(diào)用本地服務(wù)一樣。
5 總結(jié)
通過(guò)對(duì)webservice各方面技術(shù)的講解,我們掌握了如何在web項(xiàng)目中創(chuàng)建一個(gè)對(duì)外的webservcie服務(wù)。該服務(wù)不僅可以讓同平臺(tái)的web項(xiàng)目訪問(wèn),也可以讓異構(gòu)平臺(tái)的web項(xiàng)目訪問(wèn),因此webservcie技術(shù)可以在異構(gòu)平臺(tái)之間進(jìn)行數(shù)據(jù)共享。既然可以實(shí)現(xiàn)了平臺(tái)之間的數(shù)據(jù)共享,那么我們就可以把不同的功能進(jìn)行分解,部署在不同的服務(wù)器上,進(jìn)而可以實(shí)現(xiàn)web項(xiàng)目的分布式部署。
【通聯(lián)編輯:謝媛媛】