我在一些ASP.NET页面的后端调用RESTful Web服务。
我正在使用ASP.NET异步页面,所以我在使用方法:
HttpWebRequest BeginGetResponse()
和
HttpWebRequest EndGetResponse()
我的情况下的响应字符串始终是JSON字符串。我使用以下代码来读取整个字符串:
using (StreamReader sr = new StreamReader(myHttpWebResponse.GetResponseStream()))
{
myObject.JSONData = sr.ReadToEnd();
}
这种方法在可扩展性方面是否可以?我已经看到了其他代码示例,而是使用Read()在块中检索响应数据。我的主要目标是可扩展性,因此可以跨多个并发页面命中进行后端调用。
谢谢, 弗兰克
答案 0 :(得分:0)
这取决于“可扩展”的含义。如果你在谈论能够处理越来越大的文件,我会说它不是那么可扩展。由于您使用的是单个ReadToEnd,因此需要将整个流读入内存然后执行操作。随着应用程序流的数量,复杂性和大小的增长,您将发现这将开始妨碍服务器处理请求的性能。您可能还会发现您的应用程序池将在您的请求期间开始自行回收(如果您最终占用了那么多虚拟内存)。
如果流总是很小并且你只关心创建的流的数量,我不明白为什么只要你的流依赖于打开的文件,数据库连接,这就不会扩展。等