Вопрос

У меня уникальная проблема, и я хотел бы иметь возможность обрабатывать входящий HTTP POST-запрос, содержащий произвольные двоичные данные.

В настоящее время я могу обработать эти данные, используя стандартный ASP.NET Обработчик страницы или в веб-службе ASP, но я хочу знать, возможно ли обрабатывать ВХОДЯЩИЕ двоичные данные в службе WCF?Могу ли я углубиться в стек обработки WCF, чтобы обойти обработку SOAP и обработать необработанное сообщение в моем собственном коде?

Я понимаю, что это нарушает публикацию 'contract' WCF (WSDL что угодно), но на самом деле меня это не волнует.

-Джефф

Это было полезно?

Решение 4

Потратив несколько недель на эту проблему, я получил практически окончательный ответ:

Можете ли вы заменить XML / SOAP пользовательской двоичной сериализацией для WCF?

Короткий ответ:НЕТ

Длинный ответ:да, но вам придется переписать почти все интерфейсы транспортного уровня, так что вы могли бы с таким же успехом просто создать пользовательский IHttpHandler и избежать WCF все вместе.

Microsoft, пытаясь следовать стандарту SOAP (а стандарт, на мой взгляд, отвечает за эту проблему), нарушает одно из простых правил программирования -> разделение обязанностей по уровням.WCF / SOAP может показаться элегантным многоуровневым протоколом и транспортом, но реальность такова, что между уровнями существуют сложные соединения.Это означает, что WCF является чрезвычайно сложным протоколом связи, который обеспечивает транспортировку, безопасность, надежность, публикацию, сериализацию и другие функции, которые на определенном уровне взаимозависимы.Если все, что вам нужно, - это транспортный канал, WCF / SOAP добавляет огромную сложность.

Я уверен, что мог бы начать громкие разглагольствования о SOAP yes / no, но я наконец понял, что WCF / SOAP - это не то, что мне нужно для моего приложения.

-Джефф

Другие советы

Рассмотрите возможность использования MTOM.MTOM - это механизм для передачи больших двоичных вложений с сообщениями SOAP в виде необработанных байтов, позволяющий передавать сообщения меньшего размера.Для получения подробной информации смотрите:

http://msdn.microsoft.com/en-us/library/aa395209.aspx

Вы можете использовать потоковую передачу MSDN

Насколько я знаю, вы можете настроить привязку службы:http://www.c-sharpcorner.com/UploadFile/pjthesedays/bindwcf05032009012251AM/bindwcf.aspx

Использование привязки NETTCPB

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top