《C Sharp 3.0從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)》課件第23章 Web Service開發(fā)_第1頁
《C Sharp 3.0從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)》課件第23章 Web Service開發(fā)_第2頁
《C Sharp 3.0從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)》課件第23章 Web Service開發(fā)_第3頁
《C Sharp 3.0從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)》課件第23章 Web Service開發(fā)_第4頁
《C Sharp 3.0從基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)》課件第23章 Web Service開發(fā)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第23章WebService開發(fā)23.1WebService概述23.2WebService的應(yīng)用場合23.3WebService和.NETFramework23.4創(chuàng)建簡單的ASP.NETWebService23.5測試WebService23.6小結(jié)23.1WebService概述WebService是由企業(yè)發(fā)布的用于完成其特定商務(wù)需求的在線應(yīng)用服務(wù),其他公司或應(yīng)用軟件能夠通過互聯(lián)網(wǎng)來訪問并使用該在線服務(wù)。WebService是一個(gè)應(yīng)用組件,能夠邏輯性地為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù),各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標(biāo)準(zhǔn)數(shù)據(jù)格式(Http、XML、Soap)來訪問WebService,通過WebService內(nèi)部執(zhí)行得到所需結(jié)果。WebService可為不同的應(yīng)用程序提供一種連接其數(shù)據(jù)的途徑,這樣就可以在不同的應(yīng)用程序與平臺(tái)之間來交換數(shù)據(jù)。23.1.1WebService特點(diǎn)WebService就是在計(jì)算機(jī)之間使用HTTP執(zhí)行遠(yuǎn)程方法調(diào)用的一種新方法,即在遠(yuǎn)程服務(wù)器與客戶端之間傳送數(shù)據(jù)和信息的一種方法。WebService使用XML來編/解碼數(shù)據(jù),并使用SOAP傳輸數(shù)據(jù)。用戶能夠通過WebService調(diào)用已經(jīng)實(shí)現(xiàn)某個(gè)功能的應(yīng)用程序。WebService有兩種類型的應(yīng)用,即重復(fù)使用現(xiàn)有的應(yīng)用程序組件和連接現(xiàn)有的軟件。23.1.1WebService特點(diǎn)針對(duì)以往技術(shù)存在的一些局限性,WebService有了很大的改進(jìn),具體如下。平臺(tái)互操作性:WebService的客戶不必使用某一特定的開發(fā)平臺(tái)來實(shí)現(xiàn)該服務(wù)。特定的標(biāo)準(zhǔn)規(guī)范:WebService使用了標(biāo)準(zhǔn)HTTP協(xié)議通信,以及在其基礎(chǔ)上發(fā)展而來的SOAP(SimpleObjectAccessProtocol,簡易對(duì)象訪問協(xié)議)標(biāo)準(zhǔn),另外還有WSDL(WebServicesDescriptionLanguage,Webservices描述語言)、UDDI(DescriptionDiscoveryandIntegration,統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議)和DISCO(DiscoveryofWebServices,WebServices的查找)規(guī)范??缮炜s性:可以使應(yīng)用程序避免重寫。松耦合:WebService使用基于消息的協(xié)議通信使得它具有客戶和服務(wù)獨(dú)立發(fā)展的特性。B2B的集成:B2B指的是BusinesstoBusiness,即企業(yè)與企業(yè)之間通過互聯(lián)網(wǎng)進(jìn)行產(chǎn)品、服務(wù)及信息的交換。通過WebService,公司只需把關(guān)鍵的商務(wù)應(yīng)用“暴露”給指定的供應(yīng)商和客戶,就可以讓任何指定的合作伙伴調(diào)用這些商務(wù)邏輯,與他們的運(yùn)行平臺(tái)和開發(fā)語言無關(guān)。23.1.2WebService的技術(shù)支持SOAP:由于HTTP得到了所有的互聯(lián)網(wǎng)瀏覽器及服務(wù)器的支持,因此通過HTTP在應(yīng)用程序間通信是最好的解決方案,SOAP就負(fù)責(zé)完成該任務(wù)。SOAP是一種簡單的基于XML的協(xié)議,是WebService通信的核心規(guī)范。一條SOAP消息就是一個(gè)普通的XML文檔,包含下列元素。必需的Envelope元素:它是傳遞消息的根元素,可把此XML文檔標(biāo)識(shí)為一條SOAP消息??蛇x的Header元素:包含頭部信息。若使用了該元素,則必須將它放在Envelope的第一個(gè)元素的位置上,用于傳遞一些輔助性的附加消息,如身份驗(yàn)證、會(huì)話等。必需的Body元素:顧名思義,即SOAP的主體,也就是消息體,包含所有的調(diào)用和響應(yīng)信息??蛇x的Fault元素:描述發(fā)送消息產(chǎn)生異常時(shí)所報(bào)告的錯(cuò)誤信息。23.1.2WebService的技術(shù)支持示例:SOAP消息的基本結(jié)構(gòu)如下。<?xmlversion="1.0"?><soap:Envelopexmlns:soap=/2001/12/soap-envelopesoap:encodingStyle="/2001/12/soap-encoding"><soap:Header>...</soap:Header><soap:Bodyxmlns:m="/student">

<m:GetStuName><m:StuNumber>0001</m:StuNumber>

</m:GetStuName><soap:Fault>...</soap:Fault></soap:Body></soap:Envelope>23.1.2WebService的技術(shù)支持WSDL是一種基于XML的語言,用于描述WebService以及對(duì)其所有方法和調(diào)用方式。DISCO(discovery的簡稱)是一種規(guī)范,用于創(chuàng)建可查詢的XML文檔,該文檔可以找到WSDL文檔。UDDI(UniversalDescriptionDiscoveryandIntegration,通用描述、發(fā)現(xiàn)與集成服務(wù))是一種標(biāo)準(zhǔn)規(guī)范,定義了一種注冊(cè)和發(fā)現(xiàn)WebService信息的方式。UDDI正在迅速演化為一種標(biāo)準(zhǔn),通過定義如何與完備的Web服務(wù)信息庫進(jìn)行交互來超越DISCO。23.2WebService的應(yīng)用場合房屋租賃信息搜索應(yīng)用程序訂餐信息應(yīng)用程序智能客戶端應(yīng)用程序注意,雖然WebService能夠?yàn)閃eb應(yīng)用程序帶來許多方便,但某些情況下WebService并不適用,這些情況分別如下:單機(jī)應(yīng)用程序:通常很多應(yīng)用程序只需要與計(jì)算機(jī)上的其他應(yīng)用程序通信即可,所以此種情況下WebService并不適用,只需本地的API即可,使用遠(yuǎn)程的API會(huì)使系統(tǒng)消耗太大,并不會(huì)帶來應(yīng)用方面的優(yōu)勢。局域網(wǎng)應(yīng)用程序:在很多此類應(yīng)用中,所有應(yīng)用程序都在Windows平臺(tái)下使用DCOM,且運(yùn)行在同一個(gè)局域網(wǎng)中。在此種情況下,DCOM要比SOAP/HTTP效率高得多。23.3WebService和.NETFramework.NET

Framwork提供了3個(gè)命名空間:System.Web.Services命名空間:包含了用于創(chuàng)建WebService的基本類,如WebService類。System.Web.Services.Description命名空間:其中包含的類可以用于查詢WSDL文檔,并可通過WSDL文檔來描述WebService。System.Web.Services.Protocols命名空間:其中包含的類可以用于創(chuàng)建SOAP請(qǐng)求及其響應(yīng)。在.NETFramework中,Web服務(wù)可以應(yīng)用于WindowsForms、WebForms或控制臺(tái)應(yīng)用程序中。23.3.1創(chuàng)建WebServiceWebService類為WebService定義的可選基類,該基類提供對(duì)公共ASP.NET對(duì)象的直接訪問。WebService類中派生出的類可用于創(chuàng)建WebService,例如下列代碼:publicclassService:System.Web.Services.WebService{……}WebServiceAttribute類用于向WebService添加附加信息,例如描述其功能的字符串。23.3.1創(chuàng)建WebService示例:下列代碼演示W(wǎng)ebServiceAttribute類實(shí)例。

[WebService(Description="獲取時(shí)間",Namespace="/")]publicclassService:System.Web.Services.WebService{[WebMethod]publicstringTime(){returnContext.Timestamp.TimeOfDay.ToString();}}23.3.1創(chuàng)建WebServiceWebMethodAttribute類:WebService中需使用WebMethod屬性來標(biāo)記所有可以使用的方法,若方法前沒有用該屬性標(biāo)記的話則是無效的方法,不能被使用。示例:publicclassService:System.Web.Services.WebService{[WebMethod(Description="獲取時(shí)間")]publicstringTime(){returnContext.Timestamp.TimeOfDay.ToString();}}23.3.2客戶端程序調(diào)用WebService的計(jì)算機(jī)稱為客戶端??蛻舳说恼{(diào)用步驟如下。通過URL或UDDI注冊(cè)尋找相應(yīng)的WebService,并請(qǐng)求描述該WebService的WSDL文檔,由此文檔生成一個(gè)代理類。在客戶端調(diào)用之前要先實(shí)例化一個(gè)該代理的對(duì)象,然后才可調(diào)用其發(fā)布的方法??蛻舳藢⒎椒蛥?shù)等信息加入到SOAP中,通過HTTP傳送到WebService的服務(wù)器端。服務(wù)器端接收SOAP中的消息并解析,執(zhí)行相應(yīng)的方法,將執(zhí)行結(jié)果加入到SOAP中,再經(jīng)過HTTP傳送回客戶端??蛻舳舜斫邮誗OAP消息并解析,將服務(wù)器端得到的結(jié)果返回給客戶端。23.3.2客戶端程序在VisualStudio2008中,添加代理類的過程可通過【AddWebReference】命令完成。添加代理類之后,該類自動(dòng)包含一些方法,這些方法與WebService方法同名??蛻舳耸褂么眍惖拇a如下:ServicemyService=newService();stringresult=myService.HelloWorld();23.4創(chuàng)建簡單的ASP.NETWebService在VisualStudio2008中創(chuàng)建WebService的步驟非常簡單,只需在菜單欄中單擊【新建】|【項(xiàng)目】命令,在彈出的【新建項(xiàng)目】窗口中選擇“ASP.NETWeb服務(wù)】應(yīng)用程序”即可。23.4.1生成文件創(chuàng)建成功后,項(xiàng)目模板生成了Service1.asm和Service1.asmx.cs兩個(gè)文件。Service1.asmx.cs文件是Service1.asmx生成的代碼文件,因而兩者具有相同的名稱。Service1.asmx:保存WebService類。所有ASP.NET

WebService都使用.asmx擴(kuò)展名來標(biāo)識(shí),其源代碼包含在文件Service1.asmx.cs中。Service1.asmx.cs:項(xiàng)目模板在該文件中生成了一個(gè)派生自System.Web.Services.

WebService的類Service1。23.4.1生成文件Service1.asmx.cs中的示例代碼:namespacePWebService{///<summary>///Service1的摘要說明

///</summary>[WebService(Namespace="/")]publicclassService1:System.Web.Services.WebService{[WebMethod]publicstringHelloWorld(){return"HelloWorld";}}23.4.2添加Web方法為剛創(chuàng)建的WebService添加一個(gè)簡單的方法Add(),接收兩個(gè)數(shù)字,并對(duì)其進(jìn)行相加操作,執(zhí)行完畢后將結(jié)果返回客戶端。示例代碼:namespacePWebService{[WebService(Namespace="")]publicclassService1:System.Web.Services.WebService{[WebMethod]publicintAdd(inta,intb)//所添加的方法

{intnum;num=a+b;returnnum;}}}23.5測試WebService在VisualStudio2008中直接用快捷鍵【Ctrl】+【F5】調(diào)試,瀏覽器中列出了服務(wù)中的方法Add()。23.5測試WebService選擇方法Add()的鏈接,可簡單地測試Web服務(wù),也可得到SOAP請(qǐng)求和響應(yīng)的信息。23.5測試WebService當(dāng)一個(gè)WebService測試正確后,就可以發(fā)布和使用了,其發(fā)布過程如下。在菜單欄中單擊【生成】|【發(fā)布網(wǎng)站】命令。單擊省略號(hào)按鈕,在彈出的【新虛擬目錄】窗口中選擇目標(biāo)位置,這里選擇本地IIS服務(wù)器。單擊【發(fā)布】按鈕,即發(fā)布成功。在.NET中使用發(fā)布的WebService新建ASP.NETWeb應(yīng)用程序,在該項(xiàng)目中添加Web引用。單擊“本地計(jì)算機(jī)上的Web服務(wù)”,列出本地計(jì)算機(jī)上的所有Web服務(wù)。23.5測試WebService選擇剛創(chuàng)建的Web服務(wù)Service1,在【W(wǎng)eb引用名】文本框中填寫相應(yīng)的引用名,默認(rèn)為localhost,也

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論