【问题标题】:Performance improvement of client server system客户端服务器系统的性能改进
【发布时间】:2010-04-02 18:13:14
【问题描述】:

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

目前的实现有两个问题:

  1. 当数据库变得太大时,加载客户端需要很长时间。处理这个问题的最佳方法是什么。一种选择是在客户端维护缓存。如何最好地实现缓存?

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

服务器是一个 Windows 服务守护进程。客户端和服务端都是用C#实现的

【问题讨论】:

    标签: c# windows client-server


    【解决方案1】:
    • 可以在数据上放置日期/时间戳(索引),然后加载数据 > 最后一次成功的时间戳。

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

    【讨论】:

    • 您能否详细说明页面加载数据的方法?我正在使用网格视图。那么当用户滚动视图时,我们随后会加载数据?
    • 可能会向客户端发送一个空表,然后使用 ajax 在页面中异步加载数据,例如一次 1000 条记录。我不会等到用户滚动,因为与当前的实现相比,用户体验会很不稳定。
    【解决方案2】:

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

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

    【讨论】:

    • 该框架有一个开放的提供者模型,因此编写一个SQLite提供者是完全可能的。 Google 必须回答的问题是否已经存在并获得一致的许可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多