.aspx vs .ashx ГЛАВНАЯ разница

115

В чем разница между страницами .aspx и .ashx? Я использую ashx сейчас, когда мне нужно обработать запрос, который был вызван из кода и возвращен с ответом, но я хотел бы получить более технический ответ, пожалуйста.

Arrabi
источник

Ответы:

101

Page - это специальный обработчик случаев.

Универсальный веб-обработчик ( *.ashxпроцессор на основе расширений) - это HTTP-обработчик по умолчанию для всех веб-обработчиков, не имеющих пользовательского интерфейса и включающих @WebHandlerдирективу.

Обработчик страницы ASP.NET ( *.aspx) является обработчиком HTTP по умолчанию для всех страниц ASP.NET.

Среди встроенных обработчиков HTTP есть также обработчик веб-службы ( *.asmx) и обработчик трассировки ( trace.axd).

MSDN говорит :

Обработчик HTTP ASP.NET - это процесс (часто называемый «конечной точкой»), который выполняется в ответ на запрос, сделанный к веб-приложению ASP.NET. Наиболее распространенный обработчик - обработчик страницы ASP.NET, обрабатывающий файлы .aspx. Когда пользователи запрашивают файл .aspx, запрос обрабатывается страницей через обработчик страницы.

Изображение ниже иллюстрирует это: запросить трубопровод

Что касается вашего второго вопроса:

Обрабатывает ли ashx больше соединений, чем aspx?

Не думаю (но точно, по крайней мере, не меньше).

Alex
источник
спасибо, но вы не упомянули обработчик ashx, как насчет его Request Pipe Line?
Arrabi
1
@Arrabi, HttpHandlerэто просто раздел запроса, который выполняется перед Pageразделом.
Alex
82

.aspxиспользует полный жизненный цикл ( Init, Load, PreRender) и может реагировать на нажатия кнопок и т.д. имеют только один метод.
.ashxProcessRequest

Ханс Кеинг
источник
Что в этом контексте подразумевается под «многоразовым»?
redcalx 06
11
Веб-сервер не обязан создавать новый экземпляр объекта для каждого нового запроса. Если IsReusable = true на обработчике, то сервер может повторно использовать существующие объекты обработчика для обработки следующих запросов
quetzalcoatl
2
Таким образом, он создает экземпляр обработчика и сохраняет в памяти для его повторного использования. Он никогда не возвращает его GC.
uzay95
26

.aspx - это отображаемая страница. Если вам нужно представление, используйте страницу .aspx. Если все, что вам нужно, это функциональность серверной части, но при этом будет оставаться то же представление, используйте страницу .ashx.

Бабак Наффас
источник
что я знаю, я хотел получить более технический ответ, возможно, с числами, обрабатывает ли ashx больше соединений, чем aspx?
Arrabi
1

Для людей, которые раньше программировали на nodeJs, особенно с использованием expressJS. Я думаю , .ashxкак промежуточный слой , который вызывает nextфункцию. В то время как .aspxбудет контроллер, который фактически отвечает на запрос либо вокруг res.redirect, res.sendлибо что-то еще.

вспышка
источник