2010-12-15 14 views
5

En un escenario básico donde tengo un GridView con archivos para descargar y botones de enlace para descargarlos, ¿hay algún beneficio en crear un manejador de http personalizado para transmitir esos archivos en lugar de simplemente transmitirlos? desde el controlador de eventos del botón de enlace de descarga?ashx vs aspx para descarga de archivos

Editar:

Como algunos sugirieron la reutilización de código favorecería el controlador, sin embargo no es un problema en este caso particular. El controlador también es más rápido ya que evita el ciclo de vida de la página, sin embargo, esta ligera mejora en el rendimiento probablemente no valga la pena crear un controlador en mi situación particular.

Lo único que viene a la mente ahora (suponiendo que se use el mismo enfoque de página aspx) si hay alguna consideración especial en una situación donde GridView está dentro de un UpdatePanel?

+1

Yo diría que vaya con controlador. La clase de página tiene sus propias peculiaridades. –

+0

¿De qué peculiaridades hablas? – e36M3

Respuesta

4

¿Está planeando reutilizar la funcionalidad de la descarga desde más de un lugar dentro de su aplicación? Si desea acoplar la descarga del resto de su aplicación, un Generic Handler es una buena forma de hacerlo, ya que básicamente está creando un servicio. De lo contrario, si solo planea tener esa descarga desde ese botón, y solo ese botón, puede dejar la lógica allí. Recuerde, existe tal cosa como hacer que su aplicación sea más compleja de lo necesario.

+0

Buen punto de reutilización, la funcionalidad no se reutilizará en este caso. La única otra cosa que viene a la mente ahora es si un controlador de eventos dentro de un panel de actualización puede abrir el cuadro de descarga. Quizás también actualice la pregunta original con esto. – e36M3

2

Estoy usando ASHX para esto, ya que creo que tienen una huella más pequeña y como no necesito UI en absoluto para transmitir un archivo, estos son perfectos para mí.

3

Depende de usted. Las ASHX no tienen el mismo ciclo de vida de página que ASPX (sin OnLoad, etc.), generalmente se consideran más rápidas debido a la baja sobrecarga y no tienen el archivo de marcado externo asociado a un formulario web.

También puede considerar un servicio web (ASMX) si corresponde en su aplicación.

+0

De acuerdo, sé que es más delgado. No estaba seguro de si hay algún otro beneficio para seguir esta ruta. Teniendo en cuenta que ya tengo una página que proporciona el enlace de descarga, si la reutilización no es un problema y el rendimiento es el único otro beneficio de lo que podría hacer en un controlador de eventos en la misma página. – e36M3

+0

El uso de un HTTPHandler para la descarga de archivos no se trata tanto de rendimiento o reutilización. Se le asigna una tarea específica para autenticar y servir un archivo y nada más. Esto no tiene ningún requisito para un ciclo de vida de la página, o esquemas de SOAP o algo así. Su página aspx y los servicios de asmx/wcf están construidos de manera efectiva sobre HTTPHandlers. Voto por usar HTTPHandler para su descarga de archivos. – Phill