2010-10-08 17 views
5

Rozważmy stronę ASP.NET z tym kodem:Jaka jest najlepsza praktyka przesyłania dużych plików binarnych za pomocą ASP.NET?

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

Wniosek powinien być wysoce wydajność dostrojone i obsłużyć tysiące jednoczesnych żądań i głównym celem jest przeniesienie ogromny plik binarny do klientów na wysokie prędkości połączeń. Mogę wykonać zadanie z krytym ASP.NET page z HTTP Handler, IHttpAsyncHandler, ISAPI filter i ...

pytanie brzmi, co jest najlepszym wyborem do tego celu?

+0

Dane binarne są odbierane z innego serwera za pośrednictwem gniazda – Xaqron

+0

Proces nie jest związany z procesorem, ale dlatego, że jest długotrwały, w ramach testu warunków skrajnych ASP.NET głodzi (w puli nie ma już wątku), więc klienci uzyskują czas, gdy jest wystarczająco dużo CPU i RAM. – Xaqron

Odpowiedz

2

Jeśli strona może być poddana operacji wejścia/wyjścia, powinienem wybrać drogę Async. Ale powinieneś również użyć asynchronicznych metod odczytu (jeśli są dostępne) na swoim obiekcie Stream.

Aby uzyskać więcej informacji, patrz:

FileStream Constructor - with async example

Aby rozwiązać swój komentarz, który otrzymałeś te dane za pośrednictwem gniazda, można również zauważyć, że większość klas przestrzeni nazw System.Net.Sockets wspierać asynchronicznego zachowanie .

+0

Podczas badania filtrów ISAPI to najszybszy sposób, ale nie wiem, czy można go napisać przy pomocy C#, a jeśli tak, czy mam dostęp do funkcji asp.net, takich jak wywoływanie usługi sieciowej, itp ... – Xaqron

+0

@xaqron - W jakiej wersji IIS jesteś? – Kev

+0

Bez ograniczeń. Mogę używać IIS 7.0, ponieważ jest to teraz mój wybór. sprawdź komentarz, który dodałem do pytania. – Xaqron