Каков наилучший способ последовательной сериализации сообщения? - PullRequest
3 голосов
/ 12 июня 2010

Я рассматриваю поддержку сериализации сообщений для 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

Это разумная идея и как будет выглядеть идеальный интерфейс?Существует ли стандартный способ взаимодействия объектов в сериале, который имеет смысл в этом контексте?

Ответы [ 2 ]

2 голосов
/ 12 июня 2010

В java есть целый набор фреймворков, которые генерируют XML, например, JaxB, ... Теперь некоторые из этих форматов также могут быть двоичными двоичными объектами и их трудно использовать на других платформах, поэтому стоит попробовать перед вами.купить.Существуют также очень простые в использовании XML-сериализаторы.

В настоящее время JSON очень популярен, поскольку он обеспечивает простое взаимодействие с браузером и удобен для чтения и менее подробен, чем XML.

Буферы протокола и Thriftпопулярны, когда важна производительность.Это двоичные форматы, но они хорошо определены и хорошо поддерживаются на разных платформах.

0 голосов
/ 12 июня 2010

Я бы попытался сериализовать java-объекты в XML-представление и преобразовать его в байтовый массив для потокового ввода-вывода.

...