2014-10-23 2 views
4

У нас есть приложение, которое использует веб-формы для некоторых старых страниц веб-приложений, но также содержит функции MVC для некоторых новых функций. У нас есть некоторые новые требования к загрузке файлов, которые должны быть обработаны на сервере (а не прямые ссылки на статические файлы на веб-сервере).ASP.NET Handler (ashx) vs MVC Controller Действие для загрузки файлов

Я не видел ничего, чтобы указать, есть ли причина, по которой следует использовать обработчик ASHX только с помощью контроллера MVC и работать с объектом ответа и возвращать EmptyResult() в конце метода действия.

Есть ли передовая практика для этого с MVC? Следует ли оставить обработчики ASHX для WebForms или есть ли какое-то преимущество, которое они обеспечивают с помощью MVC для такого типа загрузки файлов?

ответ

5

Производительность HttpHandler лучше, так как она более голая, чем действия MVC (всего несколько дополнительных шагов, но все же).

Кроме того, я не вижу причин, по которым вы должны выбирать один из них по соображениям производительности. В MVC есть некоторые полезные функции, которые вы можете использовать, например, атрибуты кэширования и авторизации.

Если вы решите использовать MVC, используйте результаты, специально созданные для обработки файлов, например FileStreamResult или FileContentResult.

4

Ну, ASHX может быть немного более содержательным и конкретным ... однако есть что сказать о наличии всего вашего кода и логики в вашем основном приложении.

Нет технических причин, чтобы сделать один над другим, насколько мне известно, с MVC в наши дни. С WebForms было труднее передавать большие файлы, но с MVC вы можете сделать это довольно легко (так что вам не нужно сначала загружать весь файл в память). Кроме того, учитывая современные методы Async, вам не нужно так беспокоиться о привязке рабочих потоков, а не о масштабируемости.

Это действительно зависит от вас. Даже если вы хотите разделить его на свой собственный модуль, в настоящее время может возникнуть смысл сделать его модулем owin, а не ashx. Это больше о том, как вы хотите создать свое приложение.

Смежные вопросы