我正在考虑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
这是一个明智的想法,完美界面会是什么样子?是否有标准的可互操作方式来序列化在这种情况下有意义的对象?
答案 0 :(得分:2)
java中有一整套生成XML的框架,比如JaxB,......现在其中一些格式可能就像二进制blob一样,并且难以在其他平台上使用,所以在你之前尝试一下是值得的购买。还有非常容易使用的XML序列化器。
JSON现在非常流行,因为它可以轻松地与浏览器互操作,并且可读性比XML简洁。
协议缓冲区和Thrift在性能很重要时很受欢迎。这些是二进制格式,但在多个平台上得到了很好的指定和支持。
答案 1 :(得分:0)
我会尝试将java对象序列化为XML表示形式,并将其转换为流I / O的字节数组。