.aspx vs .ashx MAIN różnica

115

Jakie są różnice między stronami .aspx i .ashx? Używam Ashx teraz, gdy muszę obsłużyć żądanie, które zostało wywołane z kodu i zwrócone z odpowiedzią, ale chciałbym uzyskać bardziej techniczną odpowiedź.

Arrabi
źródło

Odpowiedzi:

101

Page jest specjalną obsługą przypadku.

Ogólny program obsługi sieci Web ( *.ashxprocesor oparty na rozszerzeniu) jest domyślnym programem obsługi HTTP dla wszystkich programów obsługi sieci Web, które nie mają interfejsu użytkownika i które zawierają @WebHandlerdyrektywę.

Program obsługi stron ASP.NET ( *.aspx) to domyślny program obsługi HTTP dla wszystkich stron ASP.NET.

Wśród wbudowanych programów obsługi HTTP znajdują się również funkcje obsługi usług internetowych ( *.asmx) i obsługi śledzenia ( trace.axd)

MSDN mówi :

Procedura obsługi ASP.NET HTTP to proces (często nazywany „punktem końcowym”), który jest uruchamiany w odpowiedzi na żądanie skierowane do aplikacji sieci Web ASP.NET. Najpopularniejszym programem obsługi jest program obsługi stron ASP.NET, który przetwarza pliki .aspx. Gdy użytkownicy żądają pliku aspx, żądanie jest przetwarzane przez stronę za pośrednictwem programu obsługi strony.

Poniższy obraz ilustruje to: zażądać rurociągu

A jeśli chodzi o drugie pytanie:

Czy ashx obsługuje więcej połączeń niż aspx?

Nie myśl tak (ale na pewno nie mniej niż).

Alex
źródło
dziękuję, ale nie wspomniałeś o programie obsługującym ashx, a co z jego linią Request Pipe?
Arrabi
1
@Arrabi, HttpHandlerto tylko sekcja żądania, która jest wykonywana przed Pagesekcją.
Alex
82

.aspxwykorzystuje pełen cykl ( Init, Load, PreRender) i może reagować na kliknięcia przycisków itp ma tylko jedną metodę.
.ashxProcessRequest

Hans Ke ing
źródło
Co w tym kontekście oznacza „wielokrotnego użytku”?
redcalx
11
Że serwer WWW nie jest zobowiązany do tworzenia nowej instancji obiektu na każde nowe żądanie. Jeśli IsReusable = true w programie obsługi, serwer może ponownie wykorzystać istniejące obiekty modułu obsługi do przetwarzania kolejnych żądań
quetzalcoatl
2
Tworzy więc instancję obsługi i przechowuje w pamięci, aby ponownie go użyć. Nigdy nie zwróci go GC.
uzay95
26

.aspx to renderowana strona. Jeśli potrzebujesz widoku, użyj strony .aspx. Jeśli potrzebujesz tylko funkcji zaplecza, ale pozostaniesz w tym samym widoku, użyj strony .ashx.

Babak Naffas
źródło
że wiem, potrzebowałem bardziej technicznej odpowiedzi, może z liczbami, czy ashx obsługuje więcej połączeń niż aspx?
Arrabi,
1

Dla ludzi, którzy wcześniej programowali w nodeJs, szczególnie używając expressJS. Myślę .ashxjako warstwy pośredniej , która wywołuje nextfunkcję. Podczas gdy .aspxbędzie kontrolerem, który faktycznie odpowie na żądanie albo w pobliżu res.redirect, res.sendalbo cokolwiek.

Lampa błyskowa
źródło