2009-08-31 9 views
2

Я планирую использовать Apache NMS для обмена сообщениями ActiveMQ, и мне интересно, какой метод сериализации будет использоваться для отправляемых объектов? XML/Binary? Что контролирует сериализацию и как ее настроить?Какой метод сериализации используется для сообщения объекта ActiveMQ NMS C#?

У кого-нибудь есть опыт работы с объектами C#? Есть ли какие-то подводные камни, о которых вы знаете?

ответ

4

По умолчанию используется System.Runtime.Serialization.Formatters.Binary.BinaryFormatter для IObjectMessage.

Вы можете установить свой собственный, например.

IObjectMessage m = session.CreateObjectMessage(); 

((ActiveMQObjectMessage)m).Formatter=new SoapFormatter();//Or any IFormatter 

Вы должны были бы установить форматировщик перед обращением IObjectMessage.Body на стороне приемника, если вы не отправлять объекты с по умолчанию BinaryFormatter.

Если вы хотите, вы также можете отправить/получить IByteMessage/ITextMessage и сериализовать свои объекты на сообщения самостоятельно любым удобным вам способом.

+0

Любая хорошая информация о обратной совместимости двоичного формата? Что происходит с удаленным/добавленным полем? – TheSoftwareJedi

+0

Кажется, что на практике (в моем ограниченном опыте atleat) отсутствующие файлы просто получают значения по умолчанию. Однако эта сериализация не имеет ничего общего с NMS/ActiveMQ. Есть много вопросов, касающихся сериализации в stackoverflow, выставлять вокруг них. – nos