WebServices 簡介超牛_第1頁
WebServices 簡介超牛_第2頁
WebServices 簡介超牛_第3頁
WebServices 簡介超牛_第4頁
WebServices 簡介超牛_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、WebServices 簡介 先給出一個概念 SOA ,即 Service Oriented Architecture ,中文一般理解為面向服務(wù)的架構(gòu),既然說是一種架構(gòu)的話,所以一般認(rèn)為 SOA 是包含了運行環(huán)境,編程模型,架構(gòu)風(fēng)格和相關(guān)方法論等在內(nèi)的一整套新的分布式軟件系統(tǒng)構(gòu)造方法和環(huán)境,涵蓋服務(wù)的整個生命周期。而在 SOA 的架構(gòu)風(fēng)格中,服務(wù)是最核心的抽象手段。SOA 中的服務(wù)是構(gòu)建在一些列基于開放標(biāo)準(zhǔn)的基礎(chǔ)之上的,Web 服務(wù)定義了如何在異構(gòu)系統(tǒng)之間實現(xiàn)通信的標(biāo)準(zhǔn)化方法,從而就使得 Web 服務(wù)可以跨越運行平臺和實現(xiàn)語言,同時也使得 Web 服務(wù)成為了實現(xiàn) SOA 中服務(wù)的主要技術(shù)。至于

2、 SOA 的話,太高深的技術(shù),這里不予討論(嘿嘿),本篇博文只介紹 WebServices 這項技術(shù)。引子有沒有一種辦法可以實現(xiàn)跨應(yīng)用程序進(jìn)行通信和跨平臺進(jìn)行通信呢?換句話說,就是有什么辦法可以實現(xiàn)我的應(yīng)用程序 A 可以和應(yīng)用程序 B 進(jìn)行通信呢?或者說是,我用 Java 寫的應(yīng)用程序和用 . Net 開發(fā)的應(yīng)用程序之間進(jìn)行通信呢?很多時候,上面提到的這些,我們是必須要使用的,比如,一個跨應(yīng)用程序吧,拿騰訊 QQ 來說吧,我估計每一個人都用過騰訊 QQ 上面的天氣預(yù)報工具吧 ! ! !上面的這個天氣預(yù)報功能是如何實現(xiàn)的呢?有一種辦法,那就是騰訊公司放個衛(wèi)星上天,并且在公司中成立一個氣象部門,天

3、天關(guān)注于天氣,然后每時每刻更新騰訊 QQ 上的這個天氣預(yù)報信息,確實,這種辦法確實行得通,不過,要真這樣做的話,估計馬化騰也該被踢出去了(哪有這么蠢???),那么上面這個是如何實現(xiàn)的呢?別急,且聽我慢慢道來然后,我們再來看看跨平臺這個東東又是什么呢?這里主要是拿 . Net 平臺和 Java 平臺來說明例子,假若,有兩個公司,每個公司呢都有自己的一個項目,一個公司呢使用 . Net 開發(fā),一個呢,使用 Java 開發(fā),恩,本來呢,這兩個是相互獨立的,進(jìn)水不犯河水,但是有一天,突然,這兩個公司給合并了,合并后的老總發(fā)現(xiàn),如果把兩個項目結(jié)合起來將會大大的賺一筆,為此,如何做?因為要把兩個項目結(jié)合在一

4、起,那么這兩個項目之間總應(yīng)該通通信吧 !可這兩個項目又是基于不同的平臺,怎么通信呢?麻煩了吧 !而后再看一種情況,就是比如一個公司使用的服務(wù)器是 Windows Server 2008,那么它如何和 IT 供應(yīng)商的 UNIX 或者是 Linux 服務(wù)器進(jìn)行連接呢?也很復(fù)雜吧 !WebServices 特點介紹WebServices 提供一個建立分布式應(yīng)用的平臺,使得運行在不同操作系統(tǒng)和不同設(shè)備上的軟件,或者是用不同的程序語言和不同廠商的軟件開發(fā)工具開發(fā)的軟件,所有可能的已開發(fā)和部署的軟件,能夠利用這一平臺實現(xiàn)分布式計算的目的。WebServices 的思想是:使得應(yīng)用程序也具有 Web 分布式

5、編程模型的松散耦合性。WebServices 的特點:(1),WebServices 是自包含的。即在客戶端不需要附加任何軟件,只要客戶機支持 HTTP 和 XML 就 OK 了。(2),WebServices 是自我描述的。在客戶端和服務(wù)端都不需要知道除了請求和響應(yīng)消息的格式和內(nèi)容外的任何事。(3),WebServices 是跨平臺和跨語言的??蛻舳撕头?wù)端均可以在不同的平臺和語言環(huán)境中實現(xiàn),同時,不必為了支持 WebServices 而更改現(xiàn)有的代碼。(4),WebServices 是基于開放和標(biāo)準(zhǔn)的。XML 和 HTTP 是 WebServices 的主要技術(shù)基礎(chǔ),而 XML 和 HTT

6、P 早就成了業(yè)內(nèi)標(biāo)準(zhǔn)了。(5),WebServices 是動態(tài)的。(6),WebServices 是可以組合的。也就是通過一個 WebService 訪問另外一個 WebService 來達(dá)到組合的目的。通過組合 WebServices 便可以將簡單的 WebServices 聚合成為實現(xiàn)更多復(fù)雜功能的復(fù)雜的服務(wù)。(7),WebServices 是松散耦合的。它完全解耦了客戶端和服務(wù)端。(8),WebServices 提供編程訪問的能力。換句話說,就是可以通過編寫程序來訪問 Web 服務(wù)。(9),WebServices 是基于經(jīng)過考驗的成熟技術(shù)上構(gòu)建的。比如 XML 和 HTTP。(10),W

7、ebServices 提供打包現(xiàn)有應(yīng)用程序的能力。(11),WebServices 通過網(wǎng)絡(luò)進(jìn)行發(fā)布,查找和使用。上面這些特點呢,現(xiàn)在不清楚的話,也不用緊,等下還會有詳細(xì)的說明的 !WebServices 到底是什么?如果簡單的說的話,WebServices 就是一組函數(shù)庫,不過這和我們平時概念中的函數(shù)庫卻又有所不同,我們平時所使用的函數(shù)庫要么是自己寫的(在自己的應(yīng)用程序當(dāng)中寫一組函數(shù)庫),要么是調(diào)用底層的 API(操作系統(tǒng) API 如 Win32 API),上面的這兩種情況有一個共同點,那就是函數(shù)庫是位于客戶端本地的,比如,您調(diào)用 Win32 API 的話,就是調(diào)用本地操作系統(tǒng)上的函數(shù)庫,而

8、這里提到 Web 服務(wù)也是一組函數(shù)庫這個概念和上面提到的函數(shù)庫這個概念的區(qū)別就在此處,因為 Web 服務(wù)看做一組函數(shù)庫的話,那么這組函數(shù)庫不是位于本地的,而是位于遠(yuǎn)程機器上(當(dāng)然也可以是本地機器中)。何為 Web 服務(wù)?也就是網(wǎng)絡(luò)服務(wù),那就是把網(wǎng)絡(luò)上不知道那個地方的一些函數(shù)看做是一組服務(wù),然后我再通過網(wǎng)絡(luò)就可以使用這些服務(wù)。關(guān)于什么是 Web 服務(wù),上面的說法那是山寨版的,稍微正經(jīng)一點的說法是:Web 服務(wù)是一種部署在 Web 上的對象或者是應(yīng)用程序組件。 Why WebServices?為什么需要使用 WebServices 呢?這必須根據(jù) WebServices 的特點以及其優(yōu)勢進(jìn)行分析了

9、。首先,上面呢,也說了,Web 服務(wù)的話,就是一組網(wǎng)絡(luò)上的應(yīng)用程序組件,這樣的話,您便可以通過在您的應(yīng)用程序中使用 Web 服務(wù)來將您的應(yīng)用程序提升到服務(wù)層面上來。既然可以看做是一組服務(wù)了的話,那么當(dāng)然就是可以提供給別個(別的應(yīng)用程序)使用咯。比如,我可以通過 Web 服務(wù)來公開一些接口給別個使用,至于這些要不要收費呢?那就看我心情了,前面舉了騰訊 QQ 上查詢天氣的例子,這個例子呢,就可以在這里來做一個解釋了,在中國,應(yīng)該只有一個衛(wèi)星來進(jìn)行天氣預(yù)報的吧?騰訊也不可能為了天氣預(yù)報而專門放個衛(wèi)星上天吧?可是騰訊 QQ 又確實是可以查詢天氣的,這里,便可以通過 Web 服務(wù)來解決。首先,中國氣象局

10、應(yīng)該是有一個衛(wèi)星的,氣象局根據(jù)衛(wèi)星所返回的結(jié)果實時發(fā)布全國各地的天氣狀況,并且將這些天氣信息以 Web 服務(wù)的形式公開,然后呢,騰訊 QQ 便可以通過這個 Web 服務(wù)來訪問到天氣狀況了,再將這些天氣狀況反饋到 QQ 上就 OK 了。然后,上面提到了 Web 服務(wù)是應(yīng)用程序組件,既然是組件,那么就可以對這個組件重復(fù)的進(jìn)行使用了,同時可以通過 Web 服務(wù)來實現(xiàn)將這個應(yīng)用程序組件作為一個服務(wù)來進(jìn)行使用,更為強大的是,可以將多個 WebServices 組合成為更為強大的 WebServices ,并且是通過互聯(lián)網(wǎng)哦!這也是一大優(yōu)點啊,然后呢,最基本的 WebServices 是基于 XML 和

11、HTTP 的(當(dāng)然這是最基本的 WebServices ,比如 WebServices 還可以通過 HTTPS 或者是 SMTP 來實現(xiàn)通信),這又有什么好處呢?很明顯,XML 和 HTTP 這些都已經(jīng)是標(biāo)準(zhǔn)了,不論你是 Java 平臺呢,還是 . Net 平臺開發(fā)出來的(或者是是使用 Web 服務(wù)),既然我是使用 XML 和 HTTP 的話,我才懶得鳥你什么 Java 還是 . Net 呢,我也不管你是 Linux 還是 Windows ,這一切都和我 Web 服務(wù)無關(guān),我關(guān)注的只是通過 HTTP 協(xié)議來傳輸 XML 就 OK 了,至于這些 XML 是如何被服務(wù)提供者開發(fā)出來的或者這些 XM

12、L 是如何被服務(wù)請求者使用的,這些都和我無關(guān),這里便可以看出 Web 服務(wù)的另一個優(yōu)勢了,那就是跨語言跨平臺(實現(xiàn)協(xié)同工作),所以可以通過 Web 服務(wù)來實現(xiàn)不同應(yīng)用程序和不同平臺之間的通信。Web 服務(wù)允許獨立于實現(xiàn)服務(wù)基于的硬件或者是軟件平臺和編寫服務(wù)所用的編程語言使用服務(wù),根據(jù)上面這兩點呢,便可以解決掉最開始提出的使用 Java 開發(fā)的應(yīng)用程序如何和使用 . Net 開發(fā)的應(yīng)用程序之間進(jìn)行通信這一問題,同時,也可以解決 Linux 或者是 UNIX 和 Windows Server 2008 之間進(jìn)行連接這一問題了。最后就是通過使用不同的 Web 服務(wù),也不管 Web 服務(wù)是那種編程語言

13、實現(xiàn)的,我們都可以從不同的平臺和操作系統(tǒng)進(jìn)行訪問,從而大大提高了不同應(yīng)用程序共享數(shù)據(jù)和應(yīng)用的能力。并且 Web 服務(wù)提供了構(gòu)建 SOA 所必須得技術(shù)基礎(chǔ)。從上面可以看出通過 WebServices 解決了我們曾經(jīng)想都不敢想的問題,這么強大的東西為什么不加以好好利用呢? WebServices 體系結(jié)構(gòu)在 Web 服務(wù)的體系結(jié)構(gòu)中,涉及到三個角色,一個是 Web 服務(wù)提供者,一個是 Web 服務(wù)中介者,還有一個就是 Web 服務(wù)請求者,同時還涉及到三類動作,即發(fā)布,查找,綁定,Web 服務(wù)提供者:可以發(fā)布 Web 服務(wù),并且對使用自身服務(wù)的請求進(jìn)行響應(yīng),Web 服務(wù)的擁有者,它會等待其他的服務(wù)或

14、者是應(yīng)用程序訪問自己。Web 服務(wù)請求者:也就是 Web 服務(wù)功能的使用者,它通過服務(wù)注冊中心也就是 Web 服務(wù)中介者查找到所需要的服務(wù),再利用 SOAP 消息向 Web 服務(wù)提供者發(fā)送請求以獲得服務(wù)。Web 服務(wù)中介者:也稱為服務(wù)代理,用來注冊已經(jīng)發(fā)布的 Web 服務(wù)提供者,并對其進(jìn)行分類,同時提供搜索服務(wù),簡單來說的話,Web 服務(wù)中介者的作用就是把一個 Web 服務(wù)請求者和合適的 Web 服務(wù)提供者聯(lián)系在一起,充當(dāng)一個管理者的角色,一般是通過 UDDI 來實現(xiàn)。發(fā)布:通過發(fā)布操作,可以使 Web 服務(wù)提供者向 Web 服務(wù)中介者注冊自己的功能以及訪問的接口。發(fā)現(xiàn)(查找):使得 Web

15、服務(wù)請求者可以通過 Web 服務(wù)中介者來查找到特點的種類的 Web 服務(wù)。綁定:這里就是實現(xiàn)讓服務(wù)請求者能夠使用服務(wù)提供者提供的服務(wù)了。 WebServices 三種基本元素之 SOAPSOAP 即 Simple Object Access Protocol 也就是簡單對象訪問協(xié)議。SOAP 呢,其指導(dǎo)理念是“唯一一個沒有發(fā)明任何新技術(shù)的技術(shù)”,是一種用于訪問 Web 服務(wù)的協(xié)議。因為 SOAP 基于 XML 和 HTTP ,其通過 XML 來實現(xiàn)消息描述,然后再通過 HTTP 實現(xiàn)消息傳輸。SOAP 是用于在應(yīng)用程序之間進(jìn)行通信的一種通信協(xié)議。因為是基于 XML 和 HTTP 的,所以其獨立

16、于語言,獨立于平臺,并且因為 XML 的擴展性很好,所以基于 XML 的 SOAP 自然擴展性也不差。通過 SOAP 可以非常方便的解決互聯(lián)網(wǎng)中消息互聯(lián)互通的需求,其和其他的 Web 服務(wù)協(xié)議構(gòu)建起 SOA 應(yīng)用的技術(shù)基礎(chǔ)。SOAP 協(xié)議的一個重要特點是它獨立于底層傳輸機制,Web 服務(wù)應(yīng)用程序可以根據(jù)需要選擇自己的數(shù)據(jù)傳輸協(xié)議,可以在發(fā)送消息時來確定相應(yīng)傳輸機制。由于 HTTP 協(xié)議本身的一些特點和局限性,使得當(dāng) SOAP 使用 HTTP 綁定的 Web 服務(wù)并不能滿足某些企業(yè)應(yīng)用的需求。比如,HTTP 不是一個可靠傳輸協(xié)議,所以有可能在傳輸過程中出現(xiàn)問題,然后 HTTP 協(xié)議基于 Requ

17、est/Response 模型,也就是說客戶端需要在等待響應(yīng)消息接收完成后才能繼續(xù)執(zhí)行,而此時如果響應(yīng)時間過長呢?基于上面的這些需求,便需要選擇合適的傳輸協(xié)議了。關(guān)于這方面的內(nèi)容的話,有點深奧了,有興趣的可以去看看 IBM 的一些關(guān)于這方面內(nèi)容的介紹。還有一點需要提及一下,那就是 SOAP 是可以繞過防火墻的,將來將會作為 W3C 的標(biāo)準(zhǔn)進(jìn)行發(fā)展。 WebServices 三種基本元素之 WSDLWSDL 即 Web Services Description Language 也就是 Web 服務(wù)描述語言。是基于 XML 的用于描述 Web 服務(wù)以及如何訪問 Web 服務(wù)的語言。服務(wù)提供者通過

18、服務(wù)描述將所有用于訪問 Web 服務(wù)的規(guī)范傳送給服務(wù)請求者,要實現(xiàn) Web 服務(wù)體系結(jié)構(gòu)的松散耦合,服務(wù)描述是一個關(guān)鍵,不管是請求者還是服務(wù)提供者,通過服務(wù)描述便可以不必了解對方的底層平臺,編程語言等,服務(wù)描述與底層的 SOAP 基礎(chǔ)結(jié)構(gòu)相結(jié)合,足以封裝服務(wù)請求者的應(yīng)用程序和服務(wù)提供者的 Web 服務(wù)之間的這個細(xì)節(jié)。WSDL 描述了 Web 服務(wù)的三個基本屬性:(1)服務(wù)所提供的操作(2)如何訪問服務(wù)(3)服務(wù)位于何處(通過 URL 來確定就 OK 了) WebServices 三種基本元素之 UDDIUDDI 即 Universal Description,Discovery and Int

19、egration,也就是通用的描述,發(fā)現(xiàn)以及整合。WSDL 呢,用來描述了訪問特定的 Web 服務(wù)的一些相關(guān)的信息,可以在互聯(lián)網(wǎng)上,或者是在企業(yè)的不同部門之間,如何來發(fā)現(xiàn)我們所需要的 Web 服務(wù)呢?而 Web 服務(wù)提供商又如何將自己開發(fā)的 Web 服務(wù)公布到因特網(wǎng)上,這就需要使用到 UDDI 了,UDDI 的話,是一個跨產(chǎn)業(yè),跨平臺的開放性架構(gòu),可以幫助 Web 服務(wù)提供商在互聯(lián)網(wǎng)上發(fā)布 Web 服務(wù)的信息。UDDI 呢是一種目錄服務(wù),企業(yè)可以通過 UDDI 來注冊和搜索 Web 服務(wù)。簡單來時候話,UDDI 就是一個目錄,只不過在這個目錄中存放的是一些關(guān)于 Web 服務(wù)的信息而已。并且 U

20、DDI 通過 SOAP 進(jìn)行通訊,構(gòu)建于 . Net 之上。 開發(fā) Web 服務(wù)的方式(1)開發(fā)階段: 實現(xiàn)一個 Web 服務(wù),使這個 Web 服務(wù)能響應(yīng)和接收 SOAP 消息, (這個呢,其實可以通過 Visual Studio 來幫助實現(xiàn)), 定義好邏輯模塊(這個 Web 服務(wù)總要干點事情吧), 然后再撰寫 WSDL 文件(這個呢,開發(fā)工具會自動生成的,不需要人工撰寫了)(2)部署階段: 指定 Web 服務(wù)的傳輸協(xié)議,將 Web 服務(wù)注冊到相應(yīng)服務(wù)描述部署文件(這些也是可以由工具來自動完成的)(3)發(fā)布階段: 將 Web 服務(wù)的接口和調(diào)用的地址公開給客戶端調(diào)用, 常用的發(fā)布方式為基于 We

21、b 提供的 WSDL 的鏈接,當(dāng)然 UDDI 也是一個選擇。 總結(jié)一下 WebServices 的優(yōu)點其實呢,前面介紹的都是關(guān)于 WebServices 的優(yōu)點,在這里就只是淺要的總結(jié)一下了。首先,WebServices 是基于 Internet 和異構(gòu)平臺的應(yīng)用,這樣便可以方便的實現(xiàn)通過網(wǎng)絡(luò)來通信,同時可以實現(xiàn)在不同的平臺之間共享數(shù)據(jù)。然后就是,WebServices 是基于 XML 和 HTTP 的,也就是基于標(biāo)準(zhǔn)和開放的,基于 XML 的話,擴展性自然好,自然跨語言?;?HTTP 的話,自然跨平臺了。最后,再回憶一下 WebServices 是一種應(yīng)用程序組件吧,這樣便可以將 WebS

22、ervices 重復(fù)使用了。 談?wù)?WebServices 的缺點首先就是由于 XML 文件的難以解析,所以在使用 Web 服務(wù)的時候,會消耗較多的 CPU 和內(nèi)存資源,而后,SOAP 是基于 XML 的,所以在網(wǎng)絡(luò)傳輸中傳輸?shù)氖?XML 文件,但是由 XML 文件相比于二進(jìn)制文件來說,要大很多,自然就會消耗更多的網(wǎng)絡(luò)資源了。而后,由于通過 WSDL 解耦了 Web 服務(wù)提供者和請求者,且 SOAP 消息時從發(fā)送者向接收者單向傳送的,這在一定程度上造成了 WebServices 是一種無狀態(tài)服務(wù),盡管現(xiàn)在在 . Net 中可以通過 Session 來實現(xiàn)在客戶端和服務(wù)端共享一些數(shù)據(jù),但是單單依

23、靠 Session 來實現(xiàn)客戶端和服務(wù)端的狀態(tài)交互也太牽強了吧WebServices 在數(shù)據(jù)綁定上也存在一些缺陷,因為所有的數(shù)據(jù)在傳輸中都是使用的 XML 來實現(xiàn)的,因此,需要在二進(jìn)制數(shù)據(jù)和 XML 之間進(jìn)行一個轉(zhuǎn)換(通過序列化和反序列化來實現(xiàn)),而在轉(zhuǎn)換過程中有可能出現(xiàn)語義丟失的情況。最后就是 WebServices 的技術(shù)要求相對比較高,因為涉及到底層的 HTTP 協(xié)議以及 SOAP ,WSDL 和 UDDL 這三大平臺元素,所以學(xué)習(xí)的曲線也是比較長的,當(dāng)然,在 . Net 中可以通過 Visual Studio 非常快速和簡單的開發(fā)和訪問一個 Web 服務(wù),但這只限于在簡單的使用上,而對

24、于本質(zhì)的東西,是比較難的。 后續(xù)正如題目所言,是 WebServices 簡介,既然是簡介的話,那么自然就是以簡為目標(biāo)了,說明一下的是,上面的這篇博文呢,源自前幾天做的一個關(guān)于 WebServices 的演講,演講的 PPT 還存有,有興趣要的可以留個郵箱的。 . Net 中 WebServices 的實戰(zhàn)下面呢,就來具體看看在 . Net 中如何開發(fā)一個 WebServices 以及如何使用這個 WebServices 開發(fā)環(huán)境:Windows 7 下 IIS 7.5Visual Studio Team System 2008Sql Server 2008首先來看看如何開發(fā)一個 WebSer

25、vices 先建立一個 ASP.NET 應(yīng)用程序項目,然后再在項目中添加一個 WebServices 服務(wù),然后就是在這個 WebServiceTest 中編寫業(yè)務(wù)邏輯了,本次實例的業(yè)務(wù)邏輯呢就是從數(shù)據(jù)庫“圖書館管理系統(tǒng)”中取出所有的讀者的信息。WebServiceTest.asmx 中的代碼如下using System.Web.Services; using System.Data; using System.Data.SqlClient; using System.Web.Configuration; namespace WebServiceDemo WebService(Namespac

26、e = /) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) System.ComponentModel.ToolboxItem(false) public class WebServiceTest : System.Web.Services.WebService WebMethod public DataSet GetAllReader() DataSet ds = new DataSet(); string connStr = WebConfigurationManager.Conne

27、ctionStringsDBConnString.ConnectionString; string sqlStr = SELECT ReaderID,ReaderIDType,ReaderName, + ReaderSex,ReaderBirth + FROM 圖書館管理系統(tǒng).dbo.Reader; using (SqlConnection sqlCon = new SqlConnection(connStr) using (SqlCommand sqlCom = sqlCon.CreateCommand() sqlCom.CommandType = CommandType.Text; sql

28、Com.CommandText = sqlStr; using (SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCom) sqlDa.Fill(ds); return ds; 然后我再在這一個項目 WebServiceDemo 中添加一個頁面 Test . aspx 來實現(xiàn)訪問自身應(yīng)用程序中的 WebServices (Test . aspx 和 WebServiceTest . asmx 位于同一應(yīng)用程序中)。這個 Test . aspx 呢非常簡單,僅僅在上面放了一個 GridView ,然后稍微寫點 Code-Behind 就 OK 了,其代碼

29、如下:using System; namespace WebServiceDemo public partial class Test : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) WebServiceTest test = new WebServiceTest(); GridView1.DataSource = test.GetAllReader(); GridView1.DataBind(); 再來瀏覽一下 Test . aspx 頁面可以看出已經(jīng)達(dá)到了預(yù)

30、定的效果,也就是從數(shù)據(jù)庫中通過 WebServices 取出了數(shù)據(jù)。而從上面的代碼可以看出,僅僅是將 WebServices 看做是一個類了,將其作為一個類來進(jìn)行使用(實質(zhì)上也就是一個類而已)。下面我們還需要看一種情況,那就是,實現(xiàn)在另外的一個應(yīng)用程序中訪問上面建立的 WebServices 。其實這種情況呢,就是和訪問網(wǎng)絡(luò)上的 WebServices 一樣了,比如騰訊 QQ 就是使用這種方式來實現(xiàn)的,為了模擬這種實現(xiàn),我首先將上面建立的這個 ASP.NET 應(yīng)用程序 部署到 IIS 上面,且指定了一個端口為 81 然后我再建立一個項目 TestWebServices并且在這個項目里面也添加一

31、個頁面 Test . aspx在 Test . aspx 上也只放一個 GridView 控件。然后就要給這個項目添加 Web 服務(wù)的引用了(右鍵 TestWebService 點擊“添加 Web 引用”)如果您要訪問的是互聯(lián)網(wǎng)上的 Web 服務(wù),比如查詢天氣,那么就需要在上面的 URL 中寫入 Web 服務(wù)所在的地址,然后“前往”就 OK 了,由于本次的演示,我只是把我的 Web 服務(wù)放在了本地的 IIS 上面,所以在此處呢選擇“本地計算機上的 Web 服務(wù)”,從上面的截圖中就可以看出,在 81 號端口上面我有一個 Web 服務(wù),就是前面的 Demo 中建立的 Web 服務(wù) WebServi

32、ceTest然后我選擇這個 Web 服務(wù),單擊它即可,上面的這幅截圖中便可以看出我在 Web 服務(wù) WebServiceTest 中公開的接口了,由于我只在其中寫了一個接口 GetAllReader ,所以在這里便只顯示了一個了。在這一步中,您便可以添加這個 Web 引用了,不過要注意的是,如果在這一步添加 Web 引用的話,那么這個 Web 服務(wù)中所有被公開的方法都會被添加到您的項目中,比如,如果我在上面的 Web 服務(wù)中還有一個 GetAllName 的方法的話,那么在這一步添加 Web 引用的話,就會將 GetAllReader 和 GetAllName 全部添加到您的項目當(dāng)中,但是有時候,這樣會太浪費了,因為我可能根本就不需要使用 GetAllName 而只需要 GetAllReader,此時,可以單擊上面的 GetAllReader 進(jìn)入下一步,在這一步中添加 Web 引用的話,那么就只會在項目中添加 GetAllReader 這個方法的引用了,我們在這里使用這種方法來添加 GetAllReader 的引用。單擊“添加引用”,此時可以看到在項目中生成一些文件,(這里呢,其實就是代理模式來實現(xiàn)了)既然在項目中引用了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論