По сути, сообщения WCF являются XML, поскольку класс S.S.C.Message использует Xml InfoSet в качестве базового представления сообщения.
Так что да, каким-то образом вам нужно "обернуть" ваш двоичный контент в конверт XML (который не обязательно должен быть конвертом SOAP, учтите, в зависимости от того, как настроена ваша привязка).
Тем не менее, обратите внимание, что это не исключает возможности потоковой передачи для обработки больших полезных нагрузок сообщений без буферизации всего сообщения в памяти; WCF все еще позволяет вам делать это, хотя иногда не очень очевидно, как это работает.
Поскольку вы работаете с пользовательским каналом, у вас есть один из двух вариантов, я думаю:
- Попросите свой собственный канал добавить обертку XML вокруг вашего двоичного содержимого перед передачей его вверх или
- Создайте собственный MessageEncoder, который автоматически добавит его для вас.
В любом случае, если вы имеете дело с большими сообщениями, вам нужно убедиться, что вы используете перегрузки MessageEncoder, которые обрабатывают потоки, а не буферы, так как они дают вам возможность выполнять скоординированную потоковую передачу реализация сервиса.