【问题标题】:Asp.net MVC real time application performanceAsp.net MVC 实时应用性能
【发布时间】:2014-07-29 08:33:47
【问题描述】:

我正在尝试创建一个 asp.net mvc web 应用程序,一些页面需要“实时”显示数据,这些数据在 sql server 数据库上,数据总是在变化 我在 sql server 中创建了一个存储过程,我在我的控制器中使用实体框架 linq 调用此过程,并使用 ajax 将结果发送到浏览器 我使用 outputcashing 来最小化存储过程的执行次数, 在同一个控制器中,有多个方法使用相同的存储过程,每个方法都执行相同的过程, 如何提高我的应用程序的性能, 有没有办法让所有控制器只执行一次存储过程??

这是我的控制器,我的目标是尽量减少数据库的使用

   [OutputCache(Duration = 20, VaryByParam = "*")]
public class JobsETLController : Controller
{

    private ETL_REP_MAUIEntities db = new ETL_REP_MAUIEntities();
    public   ObjectResult<BIOGetETLJobs_Result> ETLJobs;

    public JobsETLController()
    {


        ETLJobs =db.BIOGetETLJobs();


    }

    public ActionResult Indexp()
    {

        var y = from xx in ETLJobs
             where xx.etat!="Completed"
             orderby xx.etat ascending
                select xx;
        return PartialView(y);
}



    public ActionResult IndexpAll()
    {

        var y = from xx in ETLJobs
                    where xx.etat == "Completed"
                select xx;
        return PartialView(y);
    }

【问题讨论】:

  • 我的应用程序检测到数据库中某些表的变化并通知用户,这些表的内容不断变化
  • 不要使用轮询,而是考虑使用类似 websockets 可以为您提供的“推送”模型。您的应用程序可以设置 SqlDependency。每当您监控的数据库查询发生更改时,您的应用程序都会收到通知,您可以使用 SignalR 通知您的客户...techbrij.com/…
  • 谢谢,我只需要每 5 分钟更新一次数据,所以它不是真正的实时,但问题是同一个控制器多次使用存储过程,

标签: c# sql sql-server asp.net-mvc entity-framework


【解决方案1】:

如果您的服务器不在网络场(多台服务器)中,那么您可以将数据缓存在 Asp.net 缓存中(这不是输出缓存,而是数据缓存)。您只需为数据的到期设置 5 分钟的时间限制(您说数据需要每 5 分钟更新一次),这样当控制器需要数据时,它首先检查缓存,如果不存在,它将执行存储过程。

MyData items;

items = (MyData)Cache["MyData"];
if(items == null)
{
   items = DoQueryToReturnItems();
   Cache.Add("MyData", items, null, DateTime.Now.AddMinutes(5), ..);
}

甚至可以将缓存项设置为依赖于 SqlDependency,以便在数据更改时更新缓存。

【讨论】:

  • 谢谢,这正是我想要的,但我不明白你的例子,你能告诉我如何缓存 ETLJobs=db.BIOGetETLJobs();在上面的例子中??
  • @user3489866 - 我真的不知道它怎么能更清楚,我给了你一个例子.. 你必须弄清楚其余的值,因为只有你知道它们应该是什么是。将 MyData 替换为您自己的数据
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 2011-06-27
相关资源
最近更新 更多