国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

WebService開發(fā)的層次

2019-11-18 16:23:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Web Service是最近幾年比較火的一個(gè)東西,它帶來(lái)了一大堆的新名詞,所以顯得比較炫。看透其華而不實(shí)的表面,它也就不再神奇。下面的討論均以java為參考。

1 訪問(wèn)一個(gè)Web Service實(shí)際上可以看作調(diào)用一個(gè)函數(shù),唯一不同的就是這個(gè)函數(shù)是遠(yuǎn)程的,這么一說(shuō),它和RMI就沒(méi)有什么本質(zhì)的區(qū)別了。
既然是一個(gè)函數(shù),當(dāng)然要有函數(shù)的聲明了,完成這個(gè)工作的就是WSDL,它詳細(xì)的定義函數(shù)的原型,包括函數(shù)名、入口參數(shù)、出口參數(shù),這就是WSDL中opertion完成的工作。
既然是一個(gè)遠(yuǎn)程的函數(shù),還要涉及與遠(yuǎn)程地址的一個(gè)綁定,這是WSDL中service的任務(wù)。
Axis是一個(gè)可以通過(guò)WSDL生成相應(yīng)訪問(wèn)代碼的開發(fā)包,JBuilder中將它集成了進(jìn)去,通過(guò)Wizard的方式簡(jiǎn)化了原本需要在命令行中手工完成的操作。

2 既然是遠(yuǎn)程訪問(wèn),就一定要有一個(gè)訪問(wèn)協(xié)議,Web Service的訪問(wèn)協(xié)議就是SOAP,SOAP建立在xml之上,不同的就是對(duì)XML原本沒(méi)有限制的格式加上了一些限制,需要有envelope,在envelope中,還要分header和body。
如果利用SOAP開發(fā)Web Service的程序,那就需要根據(jù)WSDL的定義來(lái)自行組裝SOAP包,這顯然要比利用WSDL直接面向Web Service開發(fā)要復(fù)雜一些。
JAXM是一個(gè)利用SOAP進(jìn)行通信的開發(fā)包,它簡(jiǎn)化了SOAP消息的打包過(guò)程。

3 SOAP是建立在XML之上的,那么顯然XML的開發(fā)包同樣適合于SOAP。
在這個(gè)層次上開發(fā)Web Service,除了要完成上一層的工作外,還要自行按照SOAP的格式組裝SOAP消息,這顯然又增加了工作量。
XML的開發(fā)工具就比較多了,從最簡(jiǎn)單的SAX和DOM到DOM4J、JDOM,還有不少XML到對(duì)象綁定的工具,如JAXB、Castor等等。
其實(shí),不考慮Web Service,完全用XML做通信協(xié)議的情況也并不少見。知曉XML-RPC的存在,就不難理解了XML做通信的含義了。

截至到這里所討論的內(nèi)容,Sun提供了JWSDP(Java Web Service Developer Pack),其中包含從XML解析到WSDL生成的全套解決方案。

4 上面討論的所有東西實(shí)際上都還停留在傳遞消息的內(nèi)容上,并未涉及通信的過(guò)程。不要一看到Web Service的Web就想當(dāng)然認(rèn)為它只能通過(guò)HTTP來(lái)傳輸。前面的討論可以看出,所有的消息內(nèi)容與傳輸并無(wú)直接關(guān)系,所以,無(wú)論是以HTTP傳輸,還是SMTP或是自定義的協(xié)議都沒(méi)有問(wèn)題。
在這個(gè)層次上開發(fā)Web Service,前面的種種險(xiǎn)阻之外,還要完成對(duì)XML的手工解析工作。
這里還是以最常見的HTTP方式來(lái)討論。
HTTP的開發(fā)就將Server和Client區(qū)別對(duì)待,Server的實(shí)現(xiàn)通常的選擇是Servlet,讓W(xué)eb Server替我們完成HTTP協(xié)議的解析可以省去我們很多的作。Client的實(shí)現(xiàn)可以選擇JDK自帶的Http Client,Apache的Jakarta項(xiàng)目下的Commons子項(xiàng)目也提供了一個(gè)HttpClient。

5 無(wú)論是HTTP還是SMTP,抑或是自定義協(xié)議,歸根結(jié)底都是應(yīng)用級(jí)的協(xié)議,底層的實(shí)現(xiàn)都是由Socket完成。到了這個(gè)層次基本就是原始時(shí)代了,什么都沒(méi)有,一切都要手工完成。
在這個(gè)層次上開發(fā)Web Service,所有前面的困難都要一一經(jīng)歷,此外,還有協(xié)議的開發(fā)等待著不幸至此的人們。
到了這里,也不需要其它的工具了,JDK自帶的Socket可以保打天下。

6 還想往下嗎?再往下就是操作系統(tǒng)的實(shí)現(xiàn)了,Java的平臺(tái)無(wú)關(guān)就失去了意義,也超出了我目前所了解的范圍,到此打住吧!

前面所提及應(yīng)該算是Web Service的一個(gè)基本知識(shí)結(jié)構(gòu),這里并沒(méi)有討論UDDI等等的內(nèi)容,一來(lái)我對(duì)它并不了解,二來(lái)那應(yīng)該屬于應(yīng)用,不應(yīng)該算Web Service實(shí)現(xiàn)中。

雖然我們可能不會(huì)從最下層開發(fā)Web Service,但遇到底層的問(wèn)題的情況卻在所難免。
我就曾經(jīng)在開發(fā)一個(gè)Web Service應(yīng)用的時(shí)候,被人抓住HTTP頭中的SOAPAction大小寫與某個(gè)所謂的規(guī)范不同,我查了半天HTTP規(guī)范和SOAP規(guī)范,知道了HTTP是區(qū)分大小,而SOAPAction就是應(yīng)該這么寫,據(jù)理力爭(zhēng),指出所謂規(guī)范的錯(cuò)誤。

經(jīng)過(guò)前面的討論,我們可以看出,Web Service并沒(méi)有什么神秘可言,所有的東西都是建立在已有東西的基礎(chǔ)之上。技術(shù)的發(fā)展不會(huì)是無(wú)中生有,只會(huì)是一個(gè)更好的解決方案而已,在追新求變之前,一個(gè)比較牢固的基礎(chǔ)才是最重要

(出處:http://m.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 卢湾区| 安吉县| 普洱| 江城| 平邑县| 突泉县| 肇东市| 青河县| 弥勒县| 茶陵县| 香河县| 黔江区| 渝中区| 京山县| 吐鲁番市| 射阳县| 仙游县| 贡觉县| 祁门县| 镇巴县| 定远县| 读书| 佳木斯市| 汾西县| 谢通门县| 游戏| 宜宾市| 岱山县| 郎溪县| 宁晋县| 福海县| 兖州市| 交口县| 改则县| 天柱县| 晋中市| 高雄县| 满城县| 亚东县| 阳谷县| 公主岭市|