我有一个智能客户端(WPF),可以调用服务器va服务(WCF)。我正在处理的屏幕包含一个在调用构造函数时加载的对象列表。我可以在列表中添加,编辑和删除记录。
通常我正在做的是在每次添加或删除之后我再次从服务重新加载整个模型,这有很多原因,包括服务之间服务器上的数据可能已经发生了变化。
这种方法在性能方面受到了很大的打击,因为我在加载和编辑时加载所有发送列表的内容。
我还有哪些其他选项,我应该只将所需信息发送到服务器吗?如果执行添加或删除操作,我将如何重新加载所有数据呢?
答案 0 :(得分:1)
执行您所描述的内容的最佳方式(我将假设您已知客户端/服务器I / O已成为瓶颈)是在客户端填充后仅发送两个方向的更改。 / p>
如果您已采用日记模型来更新数据,则可以直截了当。为了使任何进程对共享数据进行更改,它必须创建一个添加到日志中的带时间戳的事务。数据更新是通过将事务应用于数据的方法完成的。
一旦您的数据模型支持事务日志,您就可以通过简单的方式使客户端和服务器保持最小的网络流量同步:为了更新客户端,服务器会发送自创建以来已创建的所有日记条目上次客户端更新。
这可能需要大量工作才能改进现有设计。在你走这条路之前,你想确定你想要解决的问题实际上是你遇到的问题。
答案 1 :(得分:-1)
true
或false
。只有在您false
时才会重新加载数据。如果更改不太可能或不经常发生,这是有效的,因为它需要两次调用来获取数据,当数据发生变化时。如果数据库中的更改是一个问题,您可能不希望仅在用户修改或添加某些内容时获取更改 - 例如,这可能是基于计时器的完全独立的操作。您的并发策略实际上取决于您的数据,用户数量,多个用户有兴趣同时更改相同数据的可能性等。