1

我在一些 ASP.NET 页面的后端调用 RESTful Web 服务。

我正在使用 ASP.NET 异步页面,所以在后台我使用了以下方法:

HttpWebRequest BeginGetResponse()

HttpWebRequest EndGetResponse()

在我的例子中,响应字符串始终是 JSON 字符串。我使用以下代码读取整个字符串:

using (StreamReader sr = new StreamReader(myHttpWebResponse.GetResponseStream()))
{
  myObject.JSONData = sr.ReadToEnd();
}

这种方法在可扩展性方面可以吗?我已经看到了其他代码示例,它们使用 Read() 检索块中的响应数据。我的主要目标是可扩展性,所以这个后端调用可以在许多并发页面点击中进行。

谢谢,弗兰克

4

1 回答 1

0

这取决于您所说的“可扩展”是什么意思。如果您谈论的是能够处理越来越大的文件,我会说它的可扩展性不是很好。由于您使用的是单个 ReadToEnd,因此巨大的流将需要将整个流读入内存然后执行操作。随着应用程序流的数量、复杂性和大小的增长,您会发现这将开始影响服务器处理请求的性能。您可能还会发现您的应用程序池将在您的请求期间开始自行回收(如果您最终占用了那么多虚拟内存)。

如果流总是很小并且您只关心创建的流的数量,我不明白为什么只要您的流依赖于打开的文件、数据库连接等,它就不会扩展。

于 2010-01-18T22:36:10.287 回答