使用JSON数据每隔几秒更新DB的后台进程

时间:2016-08-23 12:11:08

标签: c# json asp.net-mvc timer

我是一个完整的新手但是......

我有一个小的ASP MVC C#应用程序读取SQL数据库,我希望通过后台进程更新数据库,使用JSON请求更新数据库可能最多每分钟或几秒钟。

实施后台JSON数据库更新的最佳方法是什么?在持久计时器上的MVC应用程序(甚至是可能的?)或独立的(完全在应用程序之外)在一个单独的进程中,可执行文件在后台运行,内部编程计时器或者使用某种调度程序?

编辑:为了理解 - JSON字符串中的市场价格显然需要经常在DB中更新,即如果需要或有必要,可能每隔几秒钟更新一次

1 个答案:

答案 0 :(得分:2)

我会将Windows ServiceQuartz.net包结合使用。

您可以按照任何计划运行任何您想要的任何内容。

编辑:从上面的讨论中我得知,你的工作将调查每隔几秒运行的市场价格(一个网络请求),并且获得结果会更新你的数据库。

EDIT2:

这将是您的Quartz工作:

public class FetchAndSaveFinancialData : IJob
{
   public void Execute()
   {
       //web request to get info

       //save to db
   }
}

然后你的Windows服务基类:

public class YourFinancialServiceBase : ServiceBase
{
   protected override void OnStart(string[] args)
   {
      ServiceMain();
      base.OnStart(args);
   }
   protected override void OnStop()
   {
      base.OnStop();
   }
   protected void ServiceMain()
   {
       var scheduler = StdSchedulerFactory.GetDefaultScheduler();

       var job = JobBuilder.Create<FetchAndSaveFinancialData>().WithIdentity("Job1", "Group1").Build();

       ITrigger trigger = TriggerBuilder.Create().WithIdentity("Trigger1","Group1")
           .StartNow()
           .WithSimpleSchedule(x=>x
             .WithIntervalInSeconds(5)
             .RepeatForever()
            ).Build();

       scheduler.ScheduleJob(job,trigger);

       scheduler.Start();
   }

}

EDIT3:

这完全取决于您使用什么来访问数据。如果您打算使用EntityFramework,那么我会将MVC项目和WindowsService项目保持在引用Library项目的同一解决方案中。库项目将拥有您的所有模型,并允许您查看更改某些内容是否影响一个或两个组件。

另一方面,如果您对数据库中的存储过程非常依赖,则上述内容不太相关。您必须合并存储过程中的所有更改,而不是代码。

根据我的经验,我宁愿在一个解决方案中筛选许多项目,而不是试图用不同的语言找到完全不同的解决方案,这是您应用程序的关键部分。