Hessian

概念

Hessian是一个动态类型,二进制序列化,也是网络协议为了对象的定向传输。

优点

Hessian二进制的网络协议使不需要引入大型框架下就可以使用,并且不需要学习其它的入门的协议。

因为它是二进制协议,它更擅长于发送二进制数据,而不需要引入其它附件去扩展它的协议。

Hessian支持很多种语言,例如Java,Flash/Flex,python,c++,.net/c#,D,Erlang,PHP,Ruby,Object C等

设计目标

Hessian是一个动态类型,简洁的,可以移植到各个语言

Hessian协议有以下的设计目标:

  • 它必须自我描述序列化的类型,即不需要外部架构和接口定义

  • 它必须是语言语言独立的,要支持包括脚本语言

  • 它必须是可读可写的在单一的途径

  • 它要尽可能的简洁

  • 它必须是简单的,它可以有效地测试和实施

  • 尽可能的快

  • 必须要支持Unicode编码

  • 它必须支持八位二进制文件,而不是逃避或者用附件

  • 它必须支持加密,压缩,签名,还有事务的上下文

Hessian 入门示例

以下是一个简单的 Hessian 使用示例,包括 Maven 依赖和代码示例。

Maven 依赖

在你的 pom.xml 中添加以下依赖:

  [xml]
1
2
3
4
5
6
7
<dependencies> <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.68</version> <!-- 请使用最新版本 --> </dependency> </dependencies>

创建可序列化的类

创建一个简单的 Java 类,例如 Person

  [java]
1
2
3
4
5
6
7
8
import java.io.Serializable; public class Person implements Serializable { private String name; private int age; // 构造函数、getter 和 setter }

序列化和反序列化示例

以下是使用 Hessian 进行序列化和反序列化的示例:

  [java]
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
32
33
import com.caucho.hessian.client.HessianProxyFactory; import com.caucho.hessian.io.HessianInput; import com.caucho.hessian.io.HessianOutput; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class Main { public static void main(String[] args) { try { // 创建一个 Person 对象 Person person = new Person("Alice", 30); // 序列化 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); HessianOutput hessianOutput = new HessianOutput(outputStream); hessianOutput.writeObject(person); byte[] bytes = outputStream.toByteArray(); // 反序列化 ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); HessianInput hessianInput = new HessianInput(inputStream); Person deserializedPerson = (Person) hessianInput.readObject(); // 输出反序列化的结果 System.out.println("Name: " + deserializedPerson.getName()); System.out.println("Age: " + deserializedPerson.getAge()); } catch (Exception e) { e.printStackTrace(); } } }

json 系列

字符串

DSL-JSON 最快的 java 实现

Ali-FastJson

Google-Gson

Jackson

二进制

Google protocol buffer

Apache Thrift

Hession

Kryo

Fst

Messagepack

Jboss Marshaling

其他

JsonPath

JsonIter

参考资料

  • Hessian

Hessian

https://www.jianshu.com/p/e800d8af4e22