一直都没有机会在项目中去真正的体会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。