Отправка двоичных данных через WCF: двоичная или MTOM - PullRequest
2 голосов
/ 27 июля 2011

У меня ограниченные знания в WCF, а также отправка двоичных данных через WCF, поэтому этот вопрос может быть несколько рудиментарным.

Хотелось бы узнать разницу между отправкой данных с BinaryMessageEncodingBindingElement и MtomMessageEncodingBindingElement.Мне все еще не ясно, когда использовать какой подход после чтения этой страницы из MSDN на Большие данные и потоковая передача .

Также небольшой вопрос: одно и то же сообщение с вложениями и сообщение MTOM?

1 Ответ

8 голосов
/ 27 июля 2011

MTOM - это стандарт, который использует многослойные сообщения с кодированием MIME для отправки больших частей сообщения, которые будут слишком дорогими для кодирования base64 в виде чистого двоичного кода.Само сообщение SOAP отправляется как начальная часть сообщения и содержит ссылки на двоичные части, которые стек программного обеспечения веб-службы, такой как WCF, может затем собрать обратно, чтобы создать единое представление сообщения.

Двоичное кодированиеявляется полностью проприетарным для WCF и на самом деле не имеет ничего общего с большими сообщениями.Он представляет двоичное представление XML Infoset, которое гораздо более компактно по проводам и быстрее анализируется, чем текстовые форматы.Если вы отправляете большие двоичные фрагменты данных, то они просто вписываются в другие отправляемые байты.

Потоковая передача может быть использована с любым форматом сообщения.Это больше о том, когда данные записываются по сети, а не буферизируются целиком в памятках перед их передачей в сеть.Меньшие сообщения имеют больший смысл для буферизации перед отправкой, а большие сообщения, особенно те, которые содержат большие двоичные фрагменты или потоки, требуют потоковой передачи или исчерпают ресурсы памяти.

...