我在某些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