2016-08-23 103 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