В чем разница между страницами .aspx и .ashx? Я использую ashx сейчас, когда мне нужно обработать запрос, который был вызван из кода и возвращен с ответом, но я хотел бы получить более технический ответ, пожалуйста.
.aspx vs .ashx ГЛАВНАЯ разница
Ответы (4)
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?
Не думаю (но точно, по крайней мере, не меньше).
HttpHandler
- это просто раздел запроса, который выполняется перед разделом Page
.
- person Alex; 29.03.2011
.aspx
использует полный жизненный цикл (Init
, Load
, PreRender
) и может реагировать на нажатия кнопок и т. Д. .ashx
имеет только один ProcessRequest
метод.
.aspx - это отображаемая страница. Если вам нужно представление, используйте страницу .aspx. Если все, что вам нужно, это функциональность серверной части, но при этом будет оставаться то же представление, используйте страницу .ashx.
Для людей, которые раньше программировали на nodeJs, особенно с использованием expressJS. Я думаю о .ashx
как о промежуточном программном обеспечении, которое вызывает функцию next
. В то время как .aspx
будет контроллером, который на самом деле отвечает на запрос либо около res.redirect
, res.send
, или где-то еще.