我是一个完整的新手但是......
我有一个小的ASP MVC C#应用程序读取SQL数据库,我希望通过后台进程更新数据库,使用JSON请求更新数据库可能最多每分钟或几秒钟。
实施后台JSON数据库更新的最佳方法是什么?在持久计时器上的MVC应用程序(甚至是可能的?)或独立的(完全在应用程序之外)在一个单独的进程中,可执行文件在后台运行,内部编程计时器或者使用某种调度程序?
编辑:为了理解 - JSON字符串中的市场价格显然需要经常在DB中更新,即如果需要或有必要,可能每隔几秒钟更新一次
答案 0 :(得分:2)
我会将Windows Service与Quartz.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项目的同一解决方案中。库项目将拥有您的所有模型,并允许您查看更改某些内容是否影响一个或两个组件。
另一方面,如果您对数据库中的存储过程非常依赖,则上述内容不太相关。您必须合并存储过程中的所有更改,而不是代码。
根据我的经验,我宁愿在一个解决方案中筛选许多项目,而不是试图用不同的语言找到完全不同的解决方案,这是您应用程序的关键部分。