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


115

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

Ответы:


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?

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


спасибо, но вы не упомянули обработчик 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либо что-то еще.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.