Является ли Binary Formatter хорошим для MSMQ?

Я использую MSMQ для передачи XML. Тем не менее, я хотел бы сделать очередь более универсальной, позволяя ей принимать экземпляры класса в виде сообщений. Это напоминает о необходимости создания бинарного форматирования.

Я читал о бинарных форматировщиках и MSMQ. Похоже, что с помощью бинарного форматирования я делаю MSMQ тем, чего он действительно не должен делать. Другими словами, теперь я передаю двоичные данные на MSMQ, когда он хочет, чтобы он был очень легким и основанным на строках. Или я ошибаюсь?

То, что я прочитал, заключается в том, что в базу данных должны храниться более сложные типы данных (т.е. Двоичные). Однако это, вероятно, представляет свои проблемы, поскольку эти данные могут быть сериализованы.

Данные, которые я передаю, не основаны на потоках.

Если я собираюсь использовать MSMQ, должен ли он использоваться строго для строковых сообщений, а не для двоичных?

1 ответ

Похоже, что с помощью бинарного форматирования я делаю MSMQ тем, чего он действительно не должен делать.

Вы дезинформированы. Фактически MSMQ поставляется со своим собственным классом BinaryMessageFormatter, который явно предназначен для использования, когда вы хотите увеличить скорость за счет некоторой гибкости.

В документации есть следующее:

BinaryMessageFormatter очень эффективен и может использоваться для сериализации большинства объектов. Результат очень компактный и быстрый для синтаксического анализа, но не допускает слабосвязанных сообщений, как это делает <a href="http://msdn.microsoft.com/en-us/library/system.messaging.xmlmessageformatter.aspx" rel="nofollow noreferrer" target="_blank">XmlMessageFormatter</a>. Взаимозависимая связь означает, что клиент и сервер могут независимо выбирать тип, который отправляется и принимается.

Когда приложение отправляет сообщение в очередь с использованием экземпляра класса MessageQueue, форматтер сериализует объект в поток и вставляет его в тело сообщения. При чтении из очереди с использованием MessageQueue форматирование десериализует данные сообщения в свойстве Body сообщения.

BinaryMessageFormatter обеспечивает более высокую пропускную способность, чем XmlMessageFormatter. Используйте BinaryMessageFormatter, когда требуется чистая скорость, а не слабосвязанная передача сообщений.

licensed under cc by-sa 3.0 with attribution.