Quali sono i vantaggi di un file del gestore ASHX in asp.net?
Domanda
Quali sono i vantaggi dell'utilizzo di un ashx o di un gestore?Inoltre, ne ho bisogno se utilizzo MVC (e perché no)?
Il framework è importante (2.0+)?
Perché dovrei voler utilizzare un gestore?Recentemente mi è stato consigliato di usarne uno per recuperare un'immagine, ma non so perché.
Grazie per il tuo tempo.
Modifica: un gestore è più veloce?
Soluzione
Solo alcuni esempi:
Generazione di immagini dinamiche : puoi scrivere gestori che restituiscono immagini guidate dai dati creando un gestore ASHX che restituisca dati di immagini e quindi utilizzando tale URL nei tag. per esempio.
<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>
Restituzione di dati XML o JSON basati su REST al codice AJAX sul client.
- HTML personalizzato : restituisce HTML totalmente personalizzato per una pagina quando i moduli Web ASP.NET o il framework MVC sono troppo restrittivi
Credo che questo sia disponibile dalla 1.0
Altri suggerimenti
Lo scopo dei gestori nei progetti non MVC è fornire un qualche tipo di risposta codificata, al di fuori dell'HTML.In genere, un gestore restituisce XML (rss, RESTful, ecc.), JSON per jQuery o altro Javascript o talvolta solo dati puri come download di file binari.Ho utilizzato gestori anche per restituire javascript speciali da eseguire sul client, come un modo per caricare binari di grandi dimensioni o requisiti con un approccio "solo su richiesta".Più o meno, un gestore verrebbe utilizzato per restituire "tutto tranne HTML".
In MVC, ti allontaneresti dai gestori e utilizzeresti il Controller per restituire tutti i dati che desideri.Quindi, nel metodo come:
mywebsite.com/restapi/content/56223
RestfulContentController avrebbe un metodo per Index(), che NON restituirebbe un View(), ma invece puro XML o JSON.
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
Sono molto utili se si lavora in un ambiente in cui non si ha accesso a IIS ma si desidera modificare elementi come le intestazioni di risposta di scadenza in futuro per ottimizzare la memorizzazione nella cache di file come CSS, immagini, JavaScript
Per le immagini puoi fare cose come l'ottimizzazione al volo in modo da poter richiedere immagini come image.jpg.ashx? w = 180 & amp; quality = 70 e quindi usare il gestore per consegnare l'immagine in base alle impostazioni passato nella stringa di query
aspx eredita la pagina che implementa IRequireSessionState. Quindi, se lo chiami tramite Ajax, asp.net deve bloccare la sessione prima di continuare l'elaborazione.
Per il file ashx è stateless. A meno che non lo erediti da IRequireSessionState per gestire lo stato.
Usa ashx per tutte le chiamate Ajax e usa aspx per la pagina puramente asp.net.