为插件提供数据源的体系结构

本文关键字:体系结构 数据源 插件 | 更新日期: 2023-09-27 18:13:50

我有一个客户端服务器应用程序,显示客户端用于触摸屏的位置。目的是从民意调查、问卷调查中收集数据,并与客户执行互动任务(例如:在数据库中搜索)。客户端是一个WPF应用程序,服务器可以将用户控件推出并显示它们。到目前为止一切顺利。

到目前为止,我还不能从服务器向客户端公开通用数据源。我想要完成的是为客户端提供"连接到服务器的东西",允许客户端保存数据(例如搜索或投票结果),然后查询数据源的数据。

从客户端各种控件收集的数据差异很大,从问题/答案到搜索/结果-所有这些我都想通过我的服务器进行引导。因此,每个客户端都不需要保持与数据库的数据连接。

我想在我的服务器数据库中有一个表,其中包含每个客户端数据(类型和列)的元数据,然后是一个用于存储数据的简单表。

对此有什么想法或替代方法吗?

为插件提供数据源的体系结构

我们谈论的是多少数据?

我的第一个建议是使用命令设计模式发送和接收数据,但这可能与您的API不太一致。这允许灵活地添加或更改功能,而无需更改通信层,特别是如果您能够通过插件加载新命令。然而,这对于客户端制作的插件来说不太可能工作得很好。

对于较小的数据量,是否可以让客户端创建CSV或XML文件,将其存储在服务器上,并在需要时请求其副本?然后可以将其加载到DataTable或类似的结构中,以便在客户机上运行查询。您可以存储对数据所做的任何更改,并在客户端处理完数据后将其发送回服务器。这样做的好处是,客户端能够指定他们想要的数据以及他们想要如何存储这些数据,而服务器组件并不关心这些。

对于更大量的数据…不知道。我有创建元数据表和创建它们所描述的表并在其上构建查询框架的经验,但我怀疑这是否是最好的解决方案。事情往往会很快变得混乱——查找表、多对多关系、级联查找表、层次结构等。在你走这条路之前,我会仔细考虑一下你的数据需求。

如果您不受限于SQL的数据,您可能会考虑使用像RavenDB(或其他NoSQL解决方案)来存储他们的数据。只要它们能够序列化要发送到服务器的对象,就可以将它们存储在数据库中。向服务器发送查询可能是一个问题(虽然我不确定)。