Хотя предлагаемое решение работает нормально, есть еще один способ вернуть массив байтов из контроллера с корректно отформатированным откликом:
К сожалению, WebApi не содержит форматера для« application / октет-поток». В GitHub реализована реализация: BinaryMediaTypeFormatter (есть небольшие адаптации, чтобы заставить его работать для webapi 2, изменены сигнатуры методов).
Вы можете добавить этот форматтер в свою глобальную конфигурацию :
HttpConfiguration config;
// ...
config.Formatters.Add(new BinaryMediaTypeFormatter(false));
WebApi теперь должен использовать BinaryMediaTypeFormatter
, если запрос указывает правильный заголовок Accept.
Я предпочитаю это решение, потому что контроллер действия, возвращающий байт [], более удобен для контрольная работа. Хотя другое решение позволяет вам больше контролировать, если вы хотите вернуть другой тип контента, чем «application / octet-stream» (например, «image / gif»).
Я думаю, что основная причина производительности внешнего интерфейса заключается в следующем:
Googles Map / Reduce, GFS - отличные инструменты для фоновой обработки, но они не имеют ничего общего с производительностью внешнего интерфейса.
Map and Reduce + огромный распределенный центр обработки данных.