我们现在项目是四层结构
客户端是vb.net, 控制层是以axis为基础的webservice,业务层是ejb,数据库是oracle.
因为我们采用soap通信,而soap对于大数据量的信息返回效率很低,现在我们考虑在vb.net与java的axis之间采用使用gzip进行压缩解压,现在已经实现了byte[]数组的正确传递,但是对于对象数组就存在这样一个问题:
1.在axis平台检索得到结果集java对象数组Result[] 
2.把结果集Result[]序列化转换为byte[] 
3.压缩byte[] 
4.传递压缩的byte[]到vb.net客户端 
5.vb.net客户端解压byte[] 
6.把解压的byte[]反序列化为vb.net的Result[]的时候失败了 
可能java对象反序列化为vb.net过来,不能简单使用vb.net反序列化方法.
现在因为这个问题,一直停滞在这里,我想请教有没有什么好的方法解决这个问题.

解决方案 »

  1.   

    直接用hessian吧,用soap作为项目内部的通讯协议是馊主意
      

  2.   

    你不需要用byte[]传,axis里面的soapenc_string和.net的marshall不兼容,事实上,axis虽然实现了soap protocol,但是有apache的namespace,有两种方法可以解决这个问题,一种是让你们的Java developer把soap从RPC改成Document,第二种方法,也是我现在采用的方法,用gsoap写C++的soap client,然后通过.net访问
      

  3.   

    关于异构平台(eg:client dotnet,Server:java AP)上的开发。大家有什么感想没有