2010-10-08 12 views
5

considerar una página ASP.NET con este código:¿Cuál es la mejor práctica para transferir grandes archivos binarios con ASP.NET?

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

La aplicación debe ser muy ajustada según el desempeño y manejar miles de peticiones concurrentes y el objetivo principal es la transferencia de archivo binario enorme a los clientes a través de conexiones de alta velocidad. Puedo hacer el trabajo con un ASP.NET page, con HTTP Handler, IHttpAsyncHandler, ISAPI filter y ...

La pregunta es ¿cuál es la mejor opción para este fin?

+0

Los datos binarios se reciben de otro servidor a través del socket – Xaqron

+0

El proceso no es limitado por la CPU sino porque es largo, bajo prueba de estrés ASP.NET muere de hambre (no hay más hilos en la piscina) para que los clientes tengan tiempo de espera CPU y RAM – Xaqron

Respuesta

2

Si la página es susceptible de ser E/S atada, entonces iría por la carretera Async. Pero también debe usar los métodos de lectura asíncrona (si están disponibles) en su objeto Stream.

Para más información ver:

FileStream Constructor - with async example

Para hacer frente a su comentario de que reciba estos datos a través de un socket, también encontrará que la mayoría de las clases de espacio de nombres System.Net.Sockets aprueba el comportamiento asíncrono .

+0

Cuando investigué los filtros ISAPI son la manera más rápida, pero no sé si es posible escribir uno con C# y, en caso afirmativo, ¿tengo acceso a características de asp.net como llamar a un servicio web, etc ... – Xaqron

+0

@xaqron - ¿En qué versión de IIS estás? – Kev

+0

Sin limitación. Puedo usar IIS 7.0 ya que es mi elección ahora. por favor revisa el comentario que agregué a la pregunta. – Xaqron

Cuestiones relacionadas