一直都沒(méi)有機(jī)會(huì)在項(xiàng)目中去真正的體會(huì)webservice,之前有個(gè)項(xiàng)目需提供簡(jiǎn)單webservice的接口,是通過(guò)spring對(duì)JAX-RPC的實(shí)現(xiàn)去暴露服務(wù),然后使用eclipse自動(dòng)生成WSDL文件以及部署,就此了事,也沒(méi)有去深究。最近項(xiàng)目不太忙了,就想了解一下webservice,看看其中的究竟。
       前幾天看了下AXIS,發(fā)現(xiàn)這個(gè)基于SOAP協(xié)議的webservice實(shí)現(xiàn)實(shí)在是不讓人稱道。我按照User Guide把example試驗(yàn)了一下,也自己寫(xiě)了個(gè)簡(jiǎn)單的例子跑了一下,都成功了,但讓我感覺(jué)這樣一個(gè)webservice太麻煩了,繁瑣的部署,服務(wù)端與客戶端耗時(shí)的解析操作,一種極其笨重的感覺(jué),據(jù)說(shuō)XFire的實(shí)現(xiàn)相對(duì)簡(jiǎn)單,但還沒(méi)來(lái)得及看,改天比較一下。
       一同事極其推崇Hessian,今天簡(jiǎn)單看了下,這是一個(gè)基于binary的實(shí)現(xiàn),看了一個(gè)例子,極其的簡(jiǎn)單,沒(méi)有了繁瑣的部署,簡(jiǎn)單的服務(wù)調(diào)用,只看了java的,還不清楚用其他的語(yǔ)言如何實(shí)現(xiàn)客戶端,看了一篇對(duì)于各種webservice實(shí)現(xiàn)的性能比較,hessian遠(yuǎn)遠(yuǎn)領(lǐng)先于其他的實(shí)現(xiàn),AXIS貌似性能最差。在如此的性能差距下,還有那么多的應(yīng)用采用AXIS實(shí)現(xiàn),為何?
       我認(rèn)為hessian更適合作為一個(gè)獨(dú)立的異構(gòu)系統(tǒng)的實(shí)現(xiàn),比如我們公司的產(chǎn)品基本是前臺(tái)采用JAVA,后臺(tái)采用C++,在這種情況下,前后臺(tái)之間如何通訊應(yīng)該是可以由我們決定的,多半都不會(huì)受到客戶的牽制,在這種情況下,hessian明顯優(yōu)于AXIS。但是對(duì)于部分產(chǎn)品需要對(duì)其他開(kāi)發(fā)商提供接口,我覺(jué)得hessian就不適用了,不同開(kāi)發(fā)商之間更需要WSDL這種服務(wù)描述文件去對(duì)實(shí)現(xiàn)進(jìn)行規(guī)定,不知道hessian有沒(méi)有這種服務(wù)描述的東西,暫時(shí)還沒(méi)看到,服務(wù)端的代碼通常是不會(huì)提供給其它開(kāi)發(fā)商的,這種時(shí)候如何去做實(shí)現(xiàn)呢,如果說(shuō)是通過(guò)開(kāi)發(fā)文檔進(jìn)行告知,我覺(jué)得是不夠合理的,這不是一種標(biāo)準(zhǔn),每個(gè)人的表達(dá)方式及理解都有差異,難免會(huì)有錯(cuò)誤發(fā)生。
       簡(jiǎn)單看了下hessian,有這么一點(diǎn)想法,總的來(lái)說(shuō),hessian的實(shí)現(xiàn)更容易讓java程序員去理解,沒(méi)有太多的學(xué)習(xí)成本,AXIS就相對(duì)復(fù)雜了點(diǎn),打算繼續(xù)深入的學(xué)習(xí)一下hessian。