2012-12-20 25 views
2

我目前正在使用从一组wcf服务读取数据的mvc4应用程序。目前,当用户点击页码时,如果触发wcf请求以获取页面的不同部分的数据。我想改善它的表现。我们可以通过单个WCF调用来替换多个WCF调用吗?

我的想法是,当用户登录一个页面时,会进行一次wcf调用,它将检索多个调用先前所做的所有必要数据,并将其中的数据放入用户请求httpcontext中。

这是提高性能比单一的方法,但较大的wcf调用命名管道或命名管道下多个较小的调用?将大量数据放入httpcontext中是否有任何性能影响?

+0

如果您以异步方式进行多个呼叫,则可以获得更高的吞吐量。 –

+0

多次调用不是在页面生命周期的不同时间进行的,因此不可能做到以上。 – amateur

回答

1

我认为你正试图通过产生更多的问题来解决一个问题。 如果您一次查询所有数据并存储在httpcontext中,它将加快打开新页面的性能,但第一次打开页面所花费的时间会更长。另外,如果每个用户在httpcontext中存储数据时,一次只有很多用户,则可能会导致内存不足。

我认为首先您需要本地化问题并找出表现不佳的根本原因。它可能是一个查询,也可能是一些数据库锁。 在任何情况下缓存是一个好主意,但不要使用httpcontext。使用ASP.NET cahe或像App Fabric这样的分布式缓存。这些工具将为您提供许多内置功能,并且随后您可以更轻松地扩展您的应用程序。

希望它有帮助。

+0

感谢您的反馈 - 我已将数据缓存并正在考虑将其读入用户上下文中,以便每次请求都能轻松访问。是的,该网站将被大量访问。根据你所说的在上下文中持有物品有内存影响?另外,您是否可以解释以下内容,因为我不明白“如果您一次查询所有数据并存储在httpcontext中,它将加快打开新页面的性能,但第一次打开该页面所需的时间会更长。” 。 – amateur

+0

据我了解,你有一个网页,其中包含一些按页面分割的数据。当用户点击页码链接时,您将进行WCF服务调用以获取特定页面的数据。因此,当用户登录您的网页时,您只会收到第一页的数据。对?如果是的话,那么如果你在第一次打开你的网页时得到所有的数据,它将比获得第一页数据花费更多的时间。 –

相关问题