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