【发布时间】:2017-01-21 04:53:18
【问题描述】:
我有一个托管在 Web 服务器 (IIS) 上的 Web 应用程序(ASP .NET 应用程序)和一个客户端桌面应用程序(Windows 服务)。 Web 应用程序在数据库表中具有树结构。所以例如有一个包含列(NodeId、NodeName、ParentNodeId)的表 [Tree]。所以你有一个递归的树结构。 在客户端有一个与服务器树结构相对应的文件夹结构。所以例如如果您在服务器端的树表中有以下条目
NodeId NodeName ParentNodeId
------ -------- ------------
1 Folder1 NULL
2 Folder2 1
3 Folder3 1
然后你在客户端有一个文件夹结构,比如
Folder1 > Folder2
Folder1 > Folder3
现在,每当在服务器上更新树结构时,我都需要更新客户端上的文件夹结构。为此,我有一个 Web 服务,客户端以固定的时间间隔调用它并获取整个树结构,然后相应地更新文件夹结构。但是,在每次调用时发送整个树结构对我来说似乎效率低下。
有没有其他有效的方法可以用来解决这个问题?就像使用不同的数据结构来存储层次结构一样
编辑 1: 在服务器端,可以有任何更改,例如将整个节点子集移动/复制到新的父节点或删除整个节点子集
【问题讨论】:
-
您可以发送有关自给定时间以来发生的变化的信息;无论数据的结构如何,都可以发送差异,而不是整个数据集。
-
另一种选择是记住应用于树的修改操作序列(添加节点、删除节点、更新节点)并将其提供给客户端,以便他们可以在末端复制它们。
标签: c# asp.net data-structures tree windows-services