3

我正在考虑对spring-integration的消息序列化支持。这对于实现保证交付的各种线路级传输非常有用,而且还允许与其他消息传递系统(例如通过 AMQP)进行互操作。

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

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

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

//add HeaderSerializer, MessageSerializer

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

4

2 回答 2

2

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

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

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

于 2010-06-12T08:54:28.363 回答
0

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

于 2010-06-12T08:53:10.543 回答