如何同步两个树结构

本文关键字:两个 结构 同步 何同步 | 更新日期: 2023-09-27 18:07:01

我有一个web应用程序(asp.net应用程序)托管在一个web服务器(IIS)和一个客户端桌面应用程序(Windows Service)。web应用程序在数据库表中具有树形结构。例如,有一个表[树]与列(NodeId, NodeName, ParentNodeId)。这是一个递归树结构。在客户端有一个与服务器树结构相对应的文件夹结构。例如,如果您在服务器端的Tree表中有以下条目

NodeId NodeName ParentNodeId
------ -------- ------------
1       Folder1  NULL
2       Folder2   1
3       Folder3   1 
然后在客户端有一个文件夹结构,比如
Folder1 > Folder2
Folder1 > Folder3

现在,每当服务器上的树结构更新时,我都需要更新客户机上的文件夹结构。为此,我有一个web服务,客户端以固定的间隔调用并获取整个树结构,然后相应地更新文件夹结构。然而,在每次调用时发送整个树结构对我来说似乎效率低下。

有没有其他有效的方法可以用来解决这个问题?比如使用不同的数据结构来存储层次

编辑1:在服务器端,可以进行任何更改,例如将整个节点子集移动/复制到新的父节点或删除整个节点子集

如何同步两个树结构

你的结构看起来像一个标准的父子关系,所以乍一看我不觉得有什么问题。

您可以通过SqlDependency类使用实时方法,而不是当前使用的固定间隔方法。

为了避免拉下整个节点结构,您可以在表上放置一个标记,标记行是否为新行/已更新,或者在表上放置一些时间戳列。您必须在sql中包含任何过滤器,并确保您筛选的任何列都被索引。