Diferencia PRINCIPAL de .aspx vs .ashx

115

¿Cuáles son las diferencias entre las páginas .aspx y .ashx? Ahora uso ashx cuando necesito manejar una solicitud que se llamó desde el código y se devolvió con una respuesta, pero me gustaría una respuesta más técnica, por favor.

Arrabi
fuente

Respuestas:

101

Page es un manejador de casos especiales.

El manejador web genérico ( *.ashxprocesador basado en extensiones) es el manejador HTTP predeterminado para todos los manejadores web que no tienen una IU y que incluyen la @WebHandlerdirectiva.

El controlador de páginas ASP.NET ( *.aspx) es el controlador HTTP predeterminado para todas las páginas ASP.NET.

Entre los controladores HTTP integrados también hay un controlador de servicios web ( *.asmx) y un controlador de seguimiento ( trace.axd)

MSDN dice :

Un controlador HTTP de ASP.NET es el proceso (con frecuencia denominado "punto final") que se ejecuta en respuesta a una solicitud realizada a una aplicación web ASP.NET. El controlador más común es un controlador de página ASP.NET que procesa archivos .aspx. Cuando los usuarios solicitan un archivo .aspx, la página procesa la solicitud a través del controlador de página.

La siguiente imagen ilustra esto: solicitar tubería

En cuanto a su segunda pregunta:

¿Ashx maneja más conexiones que aspx?

No lo creo (pero seguro, al menos no menos).

Alex
fuente
gracias, pero no mencionó al manipulador de ashx, ¿qué pasa con su Request Pipe Line?
Arrabi
1
@Arrabi, HttpHandleres solo una sección de la solicitud que se está ejecutando antes de la Pagesección.
Alex
82

.aspxutiliza un ciclo de vida completo ( Init, Load, PreRender) y puede responder a clics de los botones, etc.
Una .ashxtiene un solo ProcessRequestmétodo.

Hans Ke st ing
fuente
¿Qué se entiende por "reutilizable" en este contexto?
redcalx
11
Que el servidor web no está obligado a crear una nueva instancia de objeto por nueva solicitud. Si IsReusable = true en el controlador, entonces el servidor puede reutilizar los objetos del controlador existentes para procesar las siguientes solicitudes
quetzalcoatl
2
Entonces crea una instancia de manejador y la guarda en la memoria para reutilizarla. Nunca se lo devuelva a GC.
uzay95
26

.aspx es una página renderizada. Si necesita una vista, use una página .aspx. Si todo lo que necesita es la funcionalidad de backend pero permanecerá en la misma vista, use una página .ashx.

Babak Naffas
fuente
que yo sé, quería una respuesta más técnica tal vez con números, ¿ashx maneja más conexiones que aspx?
Arrabi
1

Para las personas que han programado en nodeJs antes, particularmente usando expressJS. Pienso .ashxen un middleware que llama a la nextfunción. Si bien .aspxserá el controlador que realmente responde a la solicitud ya sea alrededor res.redirect, res.sendo lo que sea.

destello
fuente