Повлияет ли использование MTOM для небольших XML-данных на производительность? - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть несколько служб, размещенных на сервере. Один сервис передает ZIP-файл клиенту ~ 2 КБ. Другой передает XML-представление DataSet ~ 10 КБ. Другие просто передают небольшие объемы данных ~ <1 КБ. Служба передачи файлов и служба наборов данных могут в будущем увеличиваться в размерах. </p>

Будет ли это чем-то вредно, если я просто использую одну привязку для всех 3 этих служб с этой привязкой с использованием кодировки MTOM? Является ли WCF / MTOM достаточно умным, чтобы знать, когда оптимизировать?

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Если MTOM включен, WCF не будет использовать его, если отправляемое сообщение не превышает определенного размера.Так что да, вы можете включить его, не влияя на небольшие сообщения.Я не нашел документацию, которая говорит, что это за размер.

Стоит отметить, что MTOM применяется только к двоичным данным (т. Е. Байтовому массиву).Если вы возвращаете класс с сериализованным XML, MTOM вряд ли вам поможет.По моему опыту, даже возвращение массива 1000 некоторого пользовательского класса все еще отправляется в виде текста XML.Так что за то, что ты возвращаешь, я не уверен, что ты что-нибудь получишь.Ответ Марка Гравелла говорит о том, как обойти это, превратив DataSet в байтовый массив.

0 голосов
/ 19 февраля 2011

Вы вряд ли заметите какие-либо негативные побочные эффекты от включения MTOM здесь; на самом деле, оставляя в стороне оговорки относительно использования DataSet в веб-сервисе, другой вариант здесь - отправить DataSet в двоичном виде (с MTOM) -by:

  • изменить API на byte[]
  • установить DataSet RemotingFormat в двоичный код перед сериализацией
  • используйте BinaryFormatter для сериализации в MemoryStream
  • используйте MemoryStream.ToArray(), чтобы получить byte[]

Гораздо меньше, чем версия XML, и MTOM может ее использовать

Когда я смотрел на это недавно , двоичный формат удаленного взаимодействия занимал около 20% пространства, которое занимала версия xml, для точно таких же данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...