2010-10-08 15 views
5

consideri una pagina ASP.NET con questo codice:Qual è la procedura migliore per il trasferimento di file binari enormi con ASP.NET?

while (read) 
{ 
    Response.OutputStream.Write(buffer, 0, buffer.Length); 
    Response.Flush(); 
} 

La domanda deve essere altamente prestazioni a punto e gestire migliaia di richieste simultanee e lo scopo principale è il trasferimento di enormi file binario per i clienti tramite connessioni ad alta velocità. Posso fare il lavoro con un ASP.NET page, con HTTP Handler, IHttpAsyncHandler, ISAPI filter e ...

La domanda è: qual è la scelta migliore per questo scopo?

+0

I dati binari vengono ricevuti da un altro server tramite la presa – Xaqron

+0

Il processo non è limitato dalla CPU ma perché è lungo, sotto stress test ASP.NET starve (non viene lasciato più thread nel pool) così i client ottengono il timeout mentre c'è abbastanza CPU e RAM. – Xaqron

risposta

2

Se la pagina è soggetta a I/O rilegato, andrei sulla strada Async. Ma dovresti usare i metodi di lettura asincrona (se disponibili) anche sull'oggetto Stream.

Per ulteriori informazioni si veda:

FileStream Constructor - with async example

Per affrontare il tuo commento che si riceve questi dati tramite una presa, troverete anche che la maggior parte delle classi del namespace System.Net.Sockets supportano il comportamento asincrono .

+0

Come ho cercato i filtri ISAPI sono il modo più veloce ma non so se è possibile scriverne uno con C# e se sì, ho accesso alle funzionalità di asp.net come chiamare un webservice, ecc ... – Xaqron

+0

@xaqron - su quale versione di IIS sei? – Kev

+0

Nessuna limitazione. Posso usare IIS 7.0 come è la mia scelta ora. per favore controlla il commento che ho aggiunto alla domanda. – Xaqron

Problemi correlati