使用Zeroc Slice / Ice进行数据序列化(与Thrift / Protocol Buffers相比)

时间:2014-07-11 00:25:45

标签: serialization protocol-buffers thrift slice ice

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

我发现在Thrift和Protocol Buffers中构建一个简单的序列化/反序列化场景很容易。我想尝试使用Ice's Slice来做同样的事情。

我看到的主要好处是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);

如果有人遇到过类似的问题,请提前谢谢。遗憾的是,我没有时间像我想的那样全面地研究冰/切片。

1 个答案:

答案 0 :(得分:0)

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