[求助]关于JAVA远程通信

09-02-24 xiejielin
刚了解了一些远程通信的原理,有一个疑问。

客户端把一个对象序列化成流传输至服务端反序列化成对象,该过程中,是否客户端与服务端都必须具有该对象的类,能否用Object代替?

还是我理解有偏。。呵呵,求助高手。

freebox
2009-02-24 18:53
可以不是同一个类,像java和dotNet肯定不是同一个类,但这俩对象结构相当,所以它俩之间可以webservice之类的都行,或json/rest等,只要反序列工具能解释就行,最关键的是有一致的组织,这我不得不说一下eclipse之webservice工具自动生成的那批客户端东西实在是难读。

IceQi
2009-02-24 23:08
在传递的过程中,无论被传递着看起来像什么其核心永远是数据内容。

所以所谓的序列化和反序列化说白了只是编码和解释一些数据的过程,无论服务、客户端分别使用何种实现只要他们对同样的数据结构可以进行相同的解释那么就可以这样进行通讯了。

yssas
2009-02-25 11:03
对于Java和C#,序列化和反序列化是各自语言级别所支持的特性,其实现机制自然不同。在没有中间转换的情况下,其相互之间不能通过序列化对象来通信。

楼主说到的这种情况,在均为用Java开发的服务端和客户端之间使用序列化对象通信,应该是可行的。但一个前提是:接受一方同样需要能访问到对象所对应的类型信息——可以是本地可直接访问的类,也可以是使用时从网络加载(通过自定义类加载器)而来的类信息。

当然,你可以读取时转型为Object,但使用时你还是需要向下转型,如果此时JVM不能找到对应类型信息,应该会报ClassNotFoundException

猜你喜欢