2010-04-02 81 views
1

我有一箇舊式客戶端服務器系統,其中服務器維護存儲在sqlite數據庫中的一些數據的記錄。這些數據與監視存儲在服務器上的文件的訪問模式有關。客戶端應用程序基本上是數據的遠程查看器。當客戶端啓動時,它連接到服務器並從服務器獲取數據以網格視圖顯示。數據在服務器上實時更新,客戶端中的視圖自動刷新。客戶端服務器系統的性能改進

有兩個問題與當前實現:

  1. 當數據庫變得太大,需要花費大量的時間來加載客戶端。處理這個問題的最佳方法是什麼?一種選擇是在客戶端維護一個緩存。如何最好地實現緩存?

  2. 服務器如何保持差異,以便它只在刷新週期內發送diff。可以有多個客戶端,每個客戶端需要顯示服務器上可用的最新數據。

服務器是一個windows服務守護進程。無論是客戶端和服務器在C#中

回答

0
  • 實施能幫上的數據的日期/時間標記(索引),然後加載數據>最後一次成功的時間戳。

  • 以頁面形式加載數據,以便快速啓動,然後在後臺加載其餘數據。

+0

你能詳細說明一下頁面加載數據的方法嗎?我正在使用網格視圖。所以我們隨後在用戶滾動視圖時加載數據? – Tanuj 2010-04-02 18:50:37

+0

可能向客戶端發送一個空表,然後使用ajax在頁面中異步加載數據,一次記錄1000條記錄。我不會等到用戶滾動,因爲與當前的實現相比,用戶體驗會變得不穩定。 – 2010-04-02 19:26:46

0

如果您選擇「脫機工作」(緩存)解決方案,那麼您應該查看MS ADO.NET Sync Framework。它支持提供商並解決了大部分同步數據的難題。

另一種選擇是僅檢索選定的列,如主鍵和單個描述性列。其餘的數據可以按需加載,比如當它滾動到視圖或正在被訪問時。

+0

我們可以在sqlite中使用同步框架嗎? – Tanuj 2010-04-02 18:47:46

+0

該框架有一個開放的提供者模型,所以很有可能編寫一個SQLite提供者。一個人是否已經擁有一個合適的許可證是Google必須回答的問題。 – 2010-04-02 19:48:15