什么是互操作序列化邮件的最佳方式?

时间:2010-06-12 08:42:01

标签: java serialization messaging interop spring-integration

我正在考虑spring-integration的消息序列化支持。这对于实现guaranteed delivery的各种线路级传输很有用,但也允许与其他消息传递系统(例如通过AMQP)的互操作性。

出现的基本问题是,在其有效负载和标头中包含Java对象的消息应转换为byte[]和/或写入流。 Java自己的序列化显然不会削减它,因为它不可互操作。我的偏好是创建一个接口,允许用户为参与序列化的所有对象实现所需的逻辑。

这意味着我不想要求客户端开发人员生成他的域代码,而是为需要它的对象定义一个序列化器。接口类似于:

public interface PayloadSerializer<T> {
    byte[] bytesForObject(T source);
    T objectFromBytes(byte[]);
    //similar methods for streaming potentially
}

//add HeaderSerializer, MessageSerializer

这是一个明智的想法,完美界面会是什么样子?是否有标准的可互操作方式来序列化在这种情况下有意义的对象?

2 个答案:

答案 0 :(得分:2)

java中有一整套生成XML的框架,比如JaxB,......现在其中一些格式可能就像二进制blob一样,并且难以在其他平台上使用,所以在你之前尝试一下是值得的购买。还有非常容易使用的XML序列化器。

JSON现在非常流行,因为它可以轻松地与浏览器互操作,并且可读性比XML简洁。

协议缓冲区和Thrift在性能很重要时很受欢迎。这些是二进制格式,但在多个平台上得到了很好的指定和支持。

答案 1 :(得分:0)

我会尝试将java对象序列化为XML表示形式,并将其转换为流I / O的字节数组。