2017-04-21 18 views
0

我想創建一個N層應用程序,該應用程序由業務層和處理SQL數據庫以外的數據源的存儲庫層組成,例如,如果我想實現存儲庫以讀取數據從文本文件或XML文件中查詢包含「C#」的行數或計算平均分數等非SQL數據源的存儲庫模式

看來,如果用戶每次要從UI調用一次調用時,都希望查詢文本文件中的數據對大文件來說效率不高,因爲它每次都會通過圖層調用到存儲庫,並且需要將所有數據加載到內存中,然後在每次將其返回給用戶顯示之前進行查詢 - 有沒有辦法加載所有數據一次,然後允許多個查詢爲pe對它進行修改還是必須在被查詢之前每次加載到內存中?

對於非SQL數據庫數據源而言,是否有任何有效的方法讓N-Tier設計不必每次都將大量數據/文本文件加載到內存中?

+2

聽起來像只需要在存儲庫中實現緩存。就像從文本文件中讀取數據一樣,將其存儲在一個變量(即,存儲器中)中,然後從該變量中讀取(如果存在)。如果您知道文件已更改,您可能想要更新該變量。但坦率地說,這個問題有點寬泛。有無數種方式可以按照您所問的方式實施n層設計。 –

+1

使用緩存(在.Net 4.0以上的MemoryCache)並通過後臺進程刷新緩存。並且您的查詢將從內存緩存中運行。 – loneshark99

+0

@MikeMcCaughan和loneshark感謝您的意見。它聽起來像我需要緩存從文本文件返回的數據。我是否需要將文本文件的全部內容加載到存儲庫類中的可緩存對象/屬性中?它如何通過多次交易被存儲和重複使用,我不明白。 – Theomax

回答

1

您可以使用來自.net的內存緩存,然後讓後臺進程定期更新緩存。您的查詢將從緩存中運行。

謝謝。