2011-02-07 122 views
1

我在我的網站上有一個自定義的數據服務,它應該每10分鐘刷新一次數據,而不會造成用戶停機。 (asp.net mvc3,mssql 2008,c#)正確保存XDocument

目前它每10分鐘刷新數據並更新我的數據庫(mssql)沒有問題。但是,事實上,我並不是爲每個用戶請求都從數據庫中讀取數據,而是在刷新數據後立即將其保存到XML文件中,以便用戶無需任何額外的數據庫連接或進程即可獲取數據。

因此,將有一個進程重新收集數據並寫入XML,同時很多用戶會每秒都要求XML。

因爲我對文件寫/讀的東西瞭解不多,所以我不確定在寫文件之前是否應該鎖定文件,因爲其他進程可能正在讀它。或者也許沒問題,因爲只有一個流程會寫入,其他讀取/請求不會產生任何問題?在寫入之前,也不確定XDocument的Save函數是否已經鎖定。

所以,總而言之;我可以如何安全地將我的XDocument對象保存到xml文件中,而其他任何進程可能正在讀取/請求該文件?

或者我應該只是從Sql讀取數據(從不知道每個用戶的處理時間&延遲)並返回XDocument對象,這會更容易我猜?

在此先感謝!

回答

2

我認爲將XML寫入文件是一個糟糕的主意 - 讀回來可能比調用數據庫更快。相反,我會使用ASP.NET caching infrastructure,即使用Cache類將數據緩存在內存中 - 這會更快。

+0

哦,現在,這是有道理的,我沒有經歷過這種東西,所以我完全忘了它。現在看看它,謝謝! – Tiax 2011-02-07 17:00:09

+0

剛剛測試過它,工作流暢而快速,再次感謝! – Tiax 2011-02-07 18:33:54

0

你有一個數據庫是經過設計,測試和構建的,可以將數據傳遞給用戶,爲什麼要保存數據並實現自己的基於文件系統的數據庫?

我認爲您提到的最後一個選項是最好的,只需連接到數據庫並根據需要檢索XML。如果您有高效的查詢和堅實的DataAccessLayer,數據庫將表現良好。

+0

好吧,這聽起來有點奇怪使用XML,而我已經有一個SQL,但我只是認爲會比每個用戶閱讀和處理數據更好,而數據只刷新每10分鐘。 – Tiax 2011-02-07 16:59:10

0

另一種選擇是使用緩存機制,例如memcache或AppFabric Cache。