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

时间:2011-11-09 08:29:58

标签: c# architecture

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

到目前为止,我还无法将通用数据源从服务器暴露给客户端。我想要完成的是向客户端提供“连接到服务器的东西”,允许客户端保存数据(例如搜索或轮询结果),然后查询数据源中的数据。

从客户端的各种控件收集的数据差异很大,从问题/答案到搜索/结果 - 所有这些我想通过我的服务器。这样每个客户端都不会将自己的数据连接保存到数据库中。

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

关于这种或替代方法的任何想法?

1 个答案:

答案 0 :(得分:0)

我们谈论了多少数据?

我的第一个建议是,但这可能与您的API不一致,就是使用命令设计模式来发送和接收数据。这样可以灵活地添加或更改功能,而无需更改通信层,尤其是在您可以通过插件加载新命令的情况下。但是,它不太可能适用于客户端制作的插件。

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

对于大量数据......不知道。我有创建元数据表和创建他们描述的表以及构建查询框架的经验,但我怀疑这是最好的解决方案。事情往往会变得混乱快速 - 查找表,多对多关系,级联查找表,层次结构等。我会仔细考虑在您走这条路线之前您将拥有的各种数据要求。

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