版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度保險(xiǎn)合同:人壽保險(xiǎn)合同(04版)
- 2024年新一代智能手機(jī)研發(fā)合作合同
- 2024年招標(biāo)代理爭議解決合同
- 2024-2030年版中國文化產(chǎn)業(yè)發(fā)展創(chuàng)新模式規(guī)劃分析報(bào)告
- 2024-2030年版中國葉面肥行業(yè)產(chǎn)能預(yù)測及發(fā)展可行性分析報(bào)告
- 2024-2030年版中國便攜DVD行業(yè)市場發(fā)展現(xiàn)狀及運(yùn)營模式分析報(bào)告
- 2024-2030年液氮儲(chǔ)罐行業(yè)市場現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2030年新版中國燃?xì)獗頉_件項(xiàng)目可行性研究報(bào)告
- 2024年技術(shù)開發(fā)合作合同標(biāo)的權(quán)益
- 2024-2030年塑紡公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 10000中國普通人名大全
- 銑削深攪水泥土攪拌墻技術(shù)規(guī)程-中國土木工程學(xué)會(huì)
- 倉庫租賃合同電子版
- 倪海廈人紀(jì)之針灸 全
- 《學(xué)前教育專業(yè)導(dǎo)論》課程教學(xué)大綱
- 小腿免荷支具矯形器制作流程【培訓(xùn)課件】
- DB11-T 1863-2021醫(yī)療機(jī)構(gòu)保潔服務(wù)規(guī)范
- 項(xiàng)目建設(shè)全過程管理經(jīng)典講義(PPT)
- 電梯維修維保方案
- 腦心綜合征課件
- 中國大唐集團(tuán)公司紀(jì)檢監(jiān)察部門問題線索管理辦法
評(píng)論
0/150
提交評(píng)論