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