2010-04-02 56 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