C# 客户机-服务器系统的性能改进

C# 客户机-服务器系统的性能改进,c#,windows,client-server,C#,Windows,Client Server,我有一个遗留的客户机-服务器系统,其中服务器维护存储在sqlite数据库中的一些数据的记录。这些数据与监视存储在服务器上的文件的访问模式有关。客户端应用程序基本上是数据的远程查看器。启动客户机时,它将连接到服务器,并从服务器获取数据以显示在网格视图中。服务器上的数据实时更新,客户端中的视图自动刷新 目前的实施存在两个问题: 当数据库变得太大时,加载客户机会花费很多时间。处理这个问题的最佳方法是什么。一种选择是在客户端维护缓存。如何最好地实现缓存 服务器如何维护diff,以便在刷新周期中只发送di

我有一个遗留的客户机-服务器系统,其中服务器维护存储在sqlite数据库中的一些数据的记录。这些数据与监视存储在服务器上的文件的访问模式有关。客户端应用程序基本上是数据的远程查看器。启动客户机时,它将连接到服务器,并从服务器获取数据以显示在网格视图中。服务器上的数据实时更新,客户端中的视图自动刷新

目前的实施存在两个问题:

  • 当数据库变得太大时,加载客户机会花费很多时间。处理这个问题的最佳方法是什么。一种选择是在客户端维护缓存。如何最好地实现缓存

  • 服务器如何维护diff,以便在刷新周期中只发送diff。可以有多个客户端,每个客户端都需要显示服务器上可用的最新数据

  • 服务器是一个windows服务守护程序。客户端和服务器都是用C#

    • 可以在数据上放置日期/时间戳(索引),然后加载数据>上次成功的时间戳

    • 在页面中加载数据,以便更快地启动,然后在后台加载其余数据

    如果您选择“脱机工作”(缓存)解决方案,那么您应该看看MS ADO.NET同步框架。它支持提供者并解决了同步数据的大多数难题


    另一个选项是只检索选定的列,如主键和单个描述性列。其余的数据可以根据需要延迟加载,例如当它滚动到视图中或正在被访问时。

    您能详细介绍一下页面加载数据的方法吗?我正在使用网格视图。因此,当用户滚动视图时,我们随后加载数据?可能会向客户端发送一个空表,然后使用ajax在页面中异步加载数据,比如说一次加载1000条记录。我不会等到用户滚动,因为与当前的实现相比,用户体验将是不稳定的。该框架有一个开放的提供者模型,因此很可能编写SQLite提供者。谷歌必须回答一个问题:是否已经存在一个令人满意的许可证。