Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用JSON数据每隔几秒钟更新数据库的后台进程_C#_Json_Asp.net Mvc_Timer - Fatal编程技术网

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

C# 使用JSON数据每隔几秒钟更新数据库的后台进程,c#,json,asp.net-mvc,timer,C#,Json,Asp.net Mvc,Timer,我是一个完全的新手,但 我有一个小的ASP MVC应用程序读取SQL数据库,我希望通过后台进程更新数据库,可能每分钟或几秒钟更新一次JSON请求 实现后台JSON DB更新的最佳方式是什么?在MVC应用程序中,使用持久计时器(这可能吗?)或独立(完全在应用程序之外)在单独的进程中运行,可执行文件在后台运行,带有内部编程计时器,或者使用某种调度器 编辑:为了理解-显然需要经常在数据库中更新JSON字符串中的市场价格,即如果需要或有必要,可能每几秒钟更新一次。我会将JSON字符串与包结合使用 您可以

我是一个完全的新手,但

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

实现后台JSON DB更新的最佳方式是什么?在MVC应用程序中,使用持久计时器(这可能吗?)或独立(完全在应用程序之外)在单独的进程中运行,可执行文件在后台运行,带有内部编程计时器,或者使用某种调度器

编辑:为了理解-显然需要经常在数据库中更新JSON字符串中的市场价格,即如果需要或有必要,可能每几秒钟更新一次。我会将JSON字符串与包结合使用

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

编辑:从上面的讨论中,我收集到你的工作会对市场价格进行投票(一个网络请求),每隔几秒钟就会运行一次,得到结果后会更新你的数据库

编辑2:

这将是你的工作:

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();
   }

}
公共类YourFinancialServiceBase:ServiceBase
{
启动时受保护的覆盖无效(字符串[]args)
{
ServiceMain();
base.OnStart(args);
}
受保护的覆盖void OnStop()
{
base.OnStop();
}
受保护的void ServiceMain()
{
var scheduler=StdSchedulerFactory.GetDefaultScheduler();
var job=JobBuilder.Create().WithIdentity(“Job1”、“Group1”).Build();
ITrigger trigger=TriggerBuilder.Create().WithIdentity(“Trigger1”、“Group1”)
.StartNow()
.使用SimpleSchedule(x=>x
.间隔秒(5)
.永远重复
).Build();
ScheduleJob(作业,触发器);
scheduler.Start();
}
}
编辑3:

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

另一方面,如果您非常依赖数据库中的存储过程,那么上述内容就不那么重要了。您需要整合存储过程中的任何更改,而不是代码中的更改


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

您是否需要使用JSON数据更新数据库,或者您是使用来自客户端的JSON来简单地指示服务器定期更新数据库?是的,谢谢Daniel,数据库将按照JSON中包含的市场价格每隔几秒钟更新一次,该JSON请求数据提供商。希望这能回答您的问题。我有点困惑-您的MVC网站实际上是从某处接收json请求的RESTAPI吗?如果没有,您能否提供一些关于如何获得json的信息?我需要更好地了解信息来源,以便提出解决方案。MVC网站将在数据库中显示记录。我希望使用jquery每设置几秒钟自动刷新一次web客户端的最新DB更新价格,可能还需要一个用户刷新按钮。数据库将根据市场价格提供商提供的JSON获取中包含的市场价格进行更新,我还希望每隔几秒钟左右通过计时器自动请求。如果您的MVC站点显示数据库中的市场价格,那么是什么发送JSON字符串和新的市场价格来更新数据库?您是否有一个独立于接收json的MVC站点的web服务?是的,这里有一个丰富的图片,我把它放在一起,以帮助与系统通信。谢谢你,沃尔德。很明显,我没有足够的经验去做任何事,哈哈。西蒙,看看我的编辑。您只需要实现数据的实际获取和保存。这非常有帮助。非常感谢您-我将采用该解决方案-我的提示信号是在youtube上进行一些石英挖掘等,以加快速度并实现您非常明确的建议。@Simon记住,如果回答了,请将答案标记为已回答。@你的问题!我只在Windows服务中使用Quartz,因为对于ASP站点,无法保证站点将被加载。IIS可以随意自动卸载或重新加载站点,我不知道Quartz和ASP站点之间的兼容性。我建议你问一个新问题或自己研究一下,对不起!:)