2016-08-23 105 views
1

我是一个完整的新手用这个,但...后台进程更新数据库每隔几秒钟JSON数据

我有一个小的ASP MVC C#应用程序阅读,我想通过更新SQL数据库后台进程使用JSON请求更新数据库,可能会持续到每分钟或几秒钟。

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

编辑:为了便于理解 - 这是市场价格的JSON字符串,显然需要在数据库中进行更新相当频繁,即可能高达每隔几秒钟,如果希望或所必要的

+0

您是否需要使用JSON数据更新数据库,或者您是否使用客户端的JSON来简单地指示服务器定期更新数据库? –

+0

是的,谢谢Daniel,数据库将被每隔几秒从数据提供者请求的JSON中包含的市场价格更新。 希望能回答你的问题。 – user6063812

+0

我有点困惑 - 你的MVC网站实际上是从哪里接收json请求的REST api?如果不是,你能提供一些关于你如何获得json的信息吗?我需要更好地了解信息来源以提出解决方案。 –

回答

2

我会用一个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项目保存在引用库项目的相同解决方案中。库项目将包含所有模型,并允许您查看是否更改某个组件或某个组件的效果。

另一方面,如果您对数据库中的存储过程依赖很多,则上述内容不太相关。您将不得不整合存储过程中的任何更改。

以我的经验,我宁愿通过许多项目在一个解决方案中进行筛选比试图找到一个不同的语言,你的应用程序的关键部分完全不同的解决方案。

+0

是的,有点儿,这里有一个丰富的图片,我把它放在一起来帮助沟通系统。 谢谢Wurd。显然,我没有足够的经验来打勾任何东西,哈哈。 https://drive.google.com/file/d/0B-Sf9qx1nwCyY1cxalJTRFVfRXc/view?usp=sharing – user6063812

+0

@Simon看我的编辑。你只需要实现你实际获取和保存的数据。 – Wurd

+0

非常有用非常感谢你 - 我会用那个解决方案然后 - 我的提示信号做一些石英挖掘youtube等,以加快与它并实施你非常明确的建议。 – user6063812