2010-10-08 50 views
5

考慮一個ASP.NET頁面使用此代碼:使用ASP.NET傳輸巨大的二進制文件的最佳做法是什麼?

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

的應用應該具有高度性能優化和併發請求和主要目的是通過高速連接傳輸巨大的二進制文件給客戶處理成千上萬。我可以做與ASP.NET page工作,與HTTP HandlerIHttpAsyncHandlerISAPI filter和...

的問題是,什麼是實現這一目的的最佳選擇?

+0

通過套接字從其他服務器接收二進制數據 – Xaqron 2010-10-08 12:48:27

+0

該進程不受CPU限制,但由於時間太長,在壓力測試下ASP.NET陷入困境(沒有更多線程放在池中),因此客戶端有足夠的時間CPU和RAM。 – Xaqron 2010-10-08 17:35:32

回答

2

如果頁面可能會被I/O綁定,那麼我會去異步路。但是,您也應該在您的Stream對象上使用異步讀取方法(如果可用)。

欲瞭解更多信息,請參閱:

FileStream Constructor - with async example

要解決,你通過套接字接收這個數據您的評論,你還會發現,大部分System.Net.Sockets命名空間中的類支持異步行爲。

+0

正如我研究ISAPI過濾器是最快的方式,但我不知道是否有可能用C#寫一個,如果是的話,我有任何訪問asp.net功能,如調用web服務等... – Xaqron 2010-10-08 15:39:19

+0

@xaqron - 你在哪個版本的IIS上? – Kev 2010-10-08 16:06:39

+0

沒有限制。我可以使用IIS 7.0,因爲它現在是我的選擇。請檢查我添加到問題的評論。 – Xaqron 2010-10-08 17:37:24

相關問題