Serialization 使用Zeroc切片/Ice进行数据序列化(与节俭/协议缓冲区相比)

Serialization 使用Zeroc切片/Ice进行数据序列化(与节俭/协议缓冲区相比),serialization,protocol-buffers,thrift,slice,ice,Serialization,Protocol Buffers,Thrift,Slice,Ice,目前,我所寻找的只是简单的序列化/反序列化。我不寻找传输层或其他网络堆栈元素 我发现在Thrift和Protocol缓冲区中构建简单的序列化/反序列化场景很容易。我想试着用冰块做同样的事情 我看到的主要好处是,Slice除了支持“结构”外,还支持“类”。这些类支持继承,这看起来不错。我想尝试以一种简单的方式序列化它们,同时忽略Ice提供的其他传输层等 我已经在一个包含简单类的.ice文件上运行了slice2java(甚至还没有继承),但我不确定如何继续。生成的类似乎没有提供一种直接的方法来序列化

目前,我所寻找的只是简单的序列化/反序列化。我不寻找传输层或其他网络堆栈元素

我发现在Thrift和Protocol缓冲区中构建简单的序列化/反序列化场景很容易。我想试着用冰块做同样的事情

我看到的主要好处是,Slice除了支持“结构”外,还支持“类”。这些类支持继承,这看起来不错。我想尝试以一种简单的方式序列化它们,同时忽略Ice提供的其他传输层等

我已经在一个包含简单类的.ice文件上运行了slice2java(甚至还没有继承),但我不确定如何继续。生成的类似乎没有提供一种直接的方法来序列化自己,我也找不到关于如何使用Ice库来实现这一点的文档

作为一个例子,下面是我想要的PB代码:

Person p = Person.newBuilder().
  setEmail("John@doe.com").
  setId(1234).
  setName("John Doe").build();

//write the buffer to a file.
p.writeTo(new FileOutputStream("JohnDoe.pb"));

//read it back in!
Person IsItJohnDoe = Person.parseFrom(new FileInputStream("JohnDoe.pb"));
System.out.println(IsItJohnDoe);

如果有人遇到类似问题,请提前感谢。不幸的是,我没有时间像我所希望的那样全面地研究ice/slice。

根据ZeroC文档,从slice定义生成的所有Java类都实现了
Java.io.Serializable
接口,因此您可以使用该接口对它们进行序列化。您可以在文档中找到更多详细信息: