Одна вещь, которую я заметил при передаче полезной нагрузки (намного меньшей) в виде байтового массива, заключается в том, что NServiceBus будет сериализовать ее примерно так (из памяти):
<MyByteArray>
<Byte>4</Byte>
<Byte>183</Byte>
<Byte>221</Byte>
<Byte>87</Byte>
...
<MyByteArray>
Очевидно, что это не лучший способ для эффективной передачи байтового массива, но я уверен, что сериализатор NServiceBus стремится к скорости и эффективности, а не к наименьшему возможному размеру сообщения.
Хотя я согласен с тем, что было бы лучше передать что-то столь же здоровенное, как музыкальные данные, вне полосы частот, для полезных нагрузок меньшего массива байтов (например, в диапазоне 5-10 КБ), гораздо лучшей альтернативой является кодирование массива байтов в виде строки Base64. в вашем классе сообщений, используя Convert.ToBase64String(byte[] arr)
и Convert.FromBase64String(string str)
.