1、概念介绍
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 数据介质存储
2) 数据网络传输
2、对象序列化实例
为了更好的理解hessian的序列化机制,所以把java和hessian的对象序列化实例都一一列出。
1)对象序列化--java
public byte[] serialize(Object obj) throws Exception {
if(obj==null) throw new NullPointerException();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os);
out.writeObject(obj);
return os.toByteArray();
}
public Object deserialize(byte[] by) throws Exception {
if(by==null) throw new NullPointerException();
ByteArrayInputStream is = new ByteArrayInputStream(by);
ObjectInputStream in = new ObjectInputStream(is);
return in.readObject();
}
2)对象序列化--hessian (hessian2的序列化方式在附件中)
public byte[] serialize(Object obj) throws IOException{
if(obj==null) throw new NullPointerException();
ByteArrayOutputStream os = new ByteArrayOutputStream();
HessianOutput ho = new HessianOutput(os);
ho.writeObject(obj);
return os.toByteArray();
}
public Object deserialize(byte[] by) throws IOException{
if(by==null) throw new NullPointerException();
ByteArrayInputStream is = new ByteArrayInputStream(by);
HessianInput hi = new HessianInput(is);
return hi.readObject();
}
从以上代码不难看出,对象序列化的过程为:
先将对象转为字节码或其它,然后再将其还原为对象。在反序列化时,内存中必须有源对象的所属类。
3、对象序列化效率
hessian2在这方面有了很大的改进,所以优势十分明显。具体细节不再详述,在进阶篇中,我会详述序列化的实现细节。在此仅把实例执行结果公布出来:
执行结果代码:
java:
77
stxm
hessian:
41
stxm
hessian2:
30
stxm
说明:
1、数字为对象序列化后的字节长度。
2、‘stxm’为对象方法的执行结果。
hessian2的优点,谁用谁知道。待我再做深入研究之后,再把我自己认为的和大家认为的优点总结一下,并加以解释。
【转载地址】http://lionbule.iteye.com/blog/523355
http://agapple.iteye.com/blog/949266
分享到:
相关推荐
这涉及到在CXF的配置文件中添加相关配置,指示CXF使用Hessian编码器进行序列化和反序列化。 4. 创建RMI注册表:启动RMI注册表,使得远程对象可以被找到和调用。 5. 客户端调用:在客户端,我们创建一个代理对象,...
- 序列化模块通常是可插拔的,QiuRPC可能内置支持JSON、Hessian、Protobuf等多种序列化方式,开发者可以根据性能和需求选择合适的序列化库。 5. **负载均衡与容错**: - QiuRPC可能会提供简单的负载均衡策略,如...
5. **协议与序列化**:讨论Dubbo支持的通信协议,如`dubbo`、`rmi`、`http`等,以及各种序列化方式,如`Hessian2`、`FastJson`等,分析它们的优缺点和适用场景。 6. **负载均衡策略**:介绍Dubbo内置的多种负载均衡...
当服务消费者调用服务接口时,Dubbo会处理底层的网络通信,如TCP连接,并执行序列化和反序列化操作。Dubbo提供了多种协议供选择,如RPC协议、HTTP协议等,以及多种序列化方式,如Hessian、Java自带的序列化等。此外...
Hessian则通过序列化和反序列化机制实现远程调用,其性能相比纯HTTP协议有显著提升。 总结,"dubbo_rpc_hession_rmi"这个主题涵盖了Dubbo作为RPC框架的核心概念,Hessian作为RPC协议的实现,以及RPC基础理论。通过...
Hessian是一种二进制Web服务协议,它能高效地处理Java对象的序列化和反序列化。在Android开发中,Hessian用于客户端和服务端之间的通信,可以减少数据传输的开销,提高网络通信的效率。通过Hessian,Android应用可以...
在Demo中,通常会默认使用Dubbo协议和Hessian序列化。 6. **服务暴露与引用(Service Export & Reference)**:服务提供者通过`<dubbo:service>`标签暴露服务,而服务消费者通过`<dubbo:reference>`标签引用服务。...
除了基础的使用,深入学习 Dubbox 还包括了解其内部工作原理,如 Remoting 层的通信机制、序列化与反序列化过程、服务治理策略的实现等。此外,结合实际业务场景,学习如何利用 Dubbox 的扩展点实现定制化功能,如...
Hession能自动序列化和反序列化对象,使得远程调用像本地方法调用一样简单。与JSON或XML相比,Hession的二进制格式在传输效率上有着显著的优势。 接下来,我们来看看"springHessianClient"这个压缩包中的文件,这是...
序列化是远程调用中必不可少的一环,Dubbo支持多种序列化方式,如Java自带的序列化、Hessian2、FastJson等。选择合适的序列化方式可以影响到系统的性能和兼容性。 8. **容错机制** Dubbo提供了多种容错策略,如...
- **网络传输优化**:使用更高效的序列化协议(如Hessian2)以及TCP连接复用技术。 - **并发模型**:合理设置线程池大小以平衡资源利用率和响应时间。 - **服务拆分与模块化**:遵循微服务架构原则,合理拆分服务并...
3. 数据传输:请求和响应的数据都通过HTTP协议进行传输,Spring会自动处理对象的序列化和反序列化。 4. 异常处理:HTTP Invoker支持异常的透明传播,客户端可以捕获到服务器端抛出的异常,从而进行相应的处理。 四...
此外,Dubbox 支持多种序列化方式,如 Hessian2、FastJson、Java自带的序列化等。源代码展示了如何根据配置选择合适的序列化算法,并进行数据的编码和解码。 4. **负载均衡策略** 为了提高系统的可用性和响应速度...
除此之外,Dubbo还支持多种通信协议和序列化方式,如RPC协议、HTTP协议,Hessian、Fastjson等序列化库,以适应不同的场景需求。它还具备强大的容错机制,如失败重试、降级策略、隔离策略等,保证了服务的高可用性。 ...
综上所述,阅读和理解Dubbo源码需要较为扎实的Java基础和丰富的框架应用经验,对于希望深入学习分布式系统和服务治理的开发者来说,Dubbo是一个非常好的学习案例。通过本文的详细分析,可以帮助读者快速掌握Dubbo的...
5. **协议与序列化**:讨论Dubbo支持的多种通信协议(如HTTP、TCP、RMI等)和序列化方式(如Hessian、JSON等),以及如何选择合适的组合。 6. **服务注册与发现**:介绍ZooKeeper作为注册中心的角色,以及服务元...
此外,Dubbo还提供了多种序列化方式(如Hessian、JSON等)来满足不同场景下的性能需求。 #### 负载均衡 为了提升服务调用效率和可靠性,Dubbo内置了多种负载均衡策略,如随机算法、轮询算法以及最少活跃调用数算法...
它支持多种传输协议(如TCP、HTTP等)和序列化方式(如Hessian、JSON等),确保了跨语言的互操作性。此外,Dubbo还提供了服务治理的功能,包括服务注册、服务发现、调用路由等,使得微服务架构的构建和维护更加便捷...
Dubbo支持多种通信协议,如RPC(Remote Procedure Call)和HTTP,以及多种序列化方式,如Hessian和Fastjson。 在"edu-service-user"这个入门案例中,我们可以看到一个基础的服务提供者和服务消费者的构建。"edu-...