后台进程每隔几秒钟用JSON数据更新数据库

本文关键字:JSON 钟用 数据 更新 数据库 几秒 后台进程 | 更新日期: 2023-09-27 18:03:30

我是一个完全的新手,但是…

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

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

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

后台进程每隔几秒钟用JSON数据更新数据库

我会使用Windows Service和Quartz.net包。

你可以运行任何你想要的和任何时间表。

编辑:从上面的讨论中,我收集到你的工作将轮询市场价格(一个web请求),每隔几秒钟运行一次,在获得结果时将更新你的数据库。

EDIT2:

这将是你的石英工作:

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项目在同一个解决方案中引用库项目。库项目将拥有您所有的模型,并允许您查看更改某些内容是否会影响一个或两个组件。

另一方面,如果您非常依赖数据库中的存储过程,那么上面的问题就不那么重要了。您将不得不合并存储过程中的任何更改,而不是代码中的更改。

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