我在某些ASP.NET頁面的後端調用RESTful Web服務。HttpWebRequest後的StreamReader ReadToEnd()EndGetResponse() - 最具擴展性?
我使用ASP.NET異步頁面,因此在引擎蓋下我使用的方法:
HttpWebRequest的BeginGetResponse()
和
HttpWebRequest的EndGetResponse()
將R esponse字符串在我的情況下總是一個JSON字符串。我用下面的代碼來讀取整個字符串:
using (StreamReader sr = new StreamReader(myHttpWebResponse.GetResponseStream()))
{
myObject.JSONData = sr.ReadToEnd();
}
這種方法在可伸縮性方面是否可行?我看過其他代碼示例,它們使用Read()以塊的形式檢索響應數據。我的主要目標是可擴展性,因此可以跨多個併發頁面點擊進行後端調用。
感謝, 弗蘭克
處理大文件是不是一個問題 - 在JSON響應一般都在1-10千字節的範圍內。 我指的是它可以處理多個併發請求的意義上的可伸縮性。 – frankadelic 2010-01-18 23:50:18
我想說,保持你的流獨立於任何資源霸佔分配代碼 - 基本上任何輔助流或連接對象,它應該與您的應用程序池一起擴展。它會歸結爲CPU /內存/網絡功能。保持代碼的適當範圍(如你的小例子)應該允許異步地進行大量的同時連接。 – 2010-01-19 01:53:59
您是否將HTTP請求從您的ASPX應用程序發送到相同的後端服務器?如果是這樣,您需要提高WebRequest設置中的最大連接限制。否則,即使您的IIS服務器正在爲大量客戶端提供服務,頁面也會受到可用於HTTPWebRequest的傳出連接數量的限制。 可以設置的限制如下: ServicePointManager.DefaultConnectionLimit = 100; //例如; – feroze 2010-01-23 18:56:51