随笔 - 330,  文章 - 1,  评论 - 0,  阅读 - 9025

引入

阿里的dubbo默认使用的就是hessian序列化,它的特性是:序列化的时候,会写入字段名称,然后字段值,你可以想象为一个map。

而京东jsf默认使用的是msgpack序列化,它的特性是:序列化的时候,不写入字段名字,会按字段顺序写入值,你可以想象为一个数组。

区别介绍

Hessian和Msgpack都是用于序列化和反序列化数据的二进制传输协议,但它们在实现和特性上有一些区别。

  1. 数据格式:Hessian使用基于Java的二进制格式进行序列化和反序列化,而Msgpack使用一个更轻量级的二进制数据交换格式。

  2. 编码效率:Msgpack通常在编码效率方面比Hessian更高。Msgpack的二进制表示比Hessian更紧凑,这意味着Msgpack在网络传输和存储时需要更少的字节。

  3. 数据兼容性:在数据兼容性方面,Hessian更强大。Hessian支持Java中常见的数据类型以及自定义对象的序列化和反序列化,而Msgpack支持的数据类型相对较少。

  4. 跨平台支持:Msgpack相对于Hessian在跨平台和跨语言支持方面更好。Msgpack有许多编程语言的实现,可以在不同的语言之间进行数据传输和交换。

考虑到这些区别,您可以根据您的具体需求选择使用Hessian还是Msgpack。如果您更关注编码效率和跨平台支持,可以考虑使用Msgpack。如果您需要更强大的数据兼容性和更易于理解的数据格式,可以选择Hessian。

举例说明

举个例子来展示Hessian和Msgpack的区别。

假设我们有一个简单的Java对象,例如Person类,它包含姓名和年龄属性。

public class Person {
    private String name;
    private int age;

    // 省略构造函数和访问器方法
}

现在我们将使用Hessian和Msgpack分别对该对象进行序列化和反序列化。

使用Hessian进行序列化和反序列化的示例代码如下:

// 使用Hessian序列化
ByteArrayOutputStream bos = new ByteArrayOutputStream();
HessianOutput output = new HessianOutput(bos);
output.writeObject(person);
byte[] hessianBytes = bos.toByteArray();

// 使用Hessian反序列化
ByteArrayInputStream bis = new ByteArrayInputStream(hessianBytes);
HessianInput input = new HessianInput(bis);
Person deserializedPerson = (Person)input.readObject();

使用Msgpack进行序列化和反序列化的示例代码如下:

// 使用Msgpack序列化
MessagePack msgpack = new MessagePack();
byte[] msgpackBytes = msgpack.write(person);

// 使用Msgpack反序列化
Person deserializedPerson = msgpack.read(msgpackBytes, Person.class);

posted on   vow007  阅读(12)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示