2016-07-25 77 views
-2

我有一個基於ASP.NET服務器的單頁Web應用程序,它執行多個功能,其中一個需要從第三方API訪問數據。應用程序使用這些數據向用戶提供建議。c#數據庫在後臺

當用戶嘗試在頁面上執行與API中的數據無關的簡單操作時,頁面會花費大量時間加載。畢竟,應用程序每調用一次頁面都會調用API - 我需要解決這個問題。

爲了避免緩慢加載的挫折因素,我知道我可以依靠像jQuery和AJAX這樣的工具來加速客戶端。然而,其他頁面方法執行速度很快,所以當只有一個方法調用被指責時,我看不到將頁面上的所有內容轉換爲客戶端代碼的價值。

我並不總是需要來自外部API的實時數據,所以我的天生本能就是在x分鐘之後,將一個定時器方法放在一起發送回傳或頁面加載數據。但是這種方法似乎太粗暴了。有沒有更好的方法來完成這個目標?

API數據存儲在數據庫中,作爲API和網頁之間的中間人。應用程序是否可以每分鐘(獨立於頁面加載)調用API,然後在用戶的操作或頁面加載時提供數據,從而允許耗時的API方法在後臺運行而不會阻礙應用程序?

+1

太寬泛。這裏只允許具體問題。 –

+3

是的,可以有一個執行任務的後臺進程。 Google搜索將向您展示現代ASP.NET Web應用程序可以使用的一種或兩種方法,但個人而言,我更喜歡經過時間考驗的完全獨立應用程序的方法,並將Web應用程序僅僅作爲Web應用程序。像Windows服務或預定的控制檯應用程序可以從外部服務中獲取數據並定期更新數據庫。 – David

回答

-1

該數據庫絕對不能調用第三方。數據庫不這樣做,它們會將數據放入它們並存儲數據,然後查詢數據庫以將其還原。

你可以自己寫一個控制檯應用程序,或每x分鐘調用一次api的Windows服務。但我不確定這是否有效,無論是否爲過去一個月內都登錄過,而是爲每個用戶進行一次api調用。

如果沒有來自第三方API的數據,你真的應該能夠真正加載頁面。或者只是一行或任何情況下,然後做一個Ajax調用你自己的api。你的api會調用數據庫,如果最後一次數據更新是在最後x分鐘內完成的,那麼你只需從數據庫中讀取數據,如果沒有,那麼你的api可以直接調用第三方api,然後插入數據庫