c# - 查看不断变化的数据集的聚合的最佳架构选择是什么?

标签 c# wpf winforms silverlight architecture

我需要决定编写 C# 客户端应用程序的最佳方式,以便在多个不同的 View 中查看数据集。一个、部分或全部 View 可以同时可见,并且必须是连贯的。 数据集的简化说明如下所示,假设大约有 10000 个项目。

Dataset illustration

基于此数据集,必须计算许多聚合,例如每个 ItemId 和每个 ClientId 的值之和。实际计算有点复杂,但假设必须计算大约 30 个不同的聚合。

任何时候都会有大约 10 个客户端查看数据。每个用户将决定数据是持续更新还是自动刷新。

数据存储在 SQL Server 2008 R2 中,所有客户端都可以直接访问该数据,并且位于同一 LAN 上。

UI 需要是非阻塞的,以便可以在后台读取新数据,并在计算完所有聚合后刷新事件 View 。

  1. 哪种架构/技术/模式最适合这种场景?
  2. 我应该使用 WPF、Windows 窗体还是 Silverlight?
  3. 应该在服务器上预先计算 View 还是应该由客户端进行此处理?
  4. 客户端应该直接连接到数据库还是通过 WCF 服务连接?

最佳答案

不幸的是,我认为您大多数问题的答案是“这取决于情况”。

1 - 考虑到您对同一数据集的多个 View 的要求,MVVM 很有意义。

2 - 您现在最熟悉哪种技术,以及您的申请的时间范围是多少。如果您非常熟悉 WinForms 并且日程安排很紧,那么这是有意义的。如果您不会并且有时间学习,那么 Silverlight 可能更有意义。我对 WPF 有点纠结,因为现在它看起来更像是 Silverlight++,而不是相反。换句话说,如果您需要开发业务线应用程序,请选择 Silverlight 除非存在只能通过 WPF 满足的要求。

3 - 这个问题的答案取决于两件事:数据更新的频率以及计算的复杂程度/适合 SQL 的程度。我通常更喜欢在服务器端处理聚合,但这取决于您执行的具体计算,这可能可行也可能不可行。

4 - 这将根据您选择的技术真正为您量身定制。 Silverlight无法直接连接数据库,因此必须使用服务。 WinForms和WPF可以直接连接数据库。即便如此,如果您发现让每个客户端直接调用数据库可能会产生性能问题,那么使用数据访问服务会有所帮助。

许多这些决定都是权衡的,你甚至可能不知道你已经交易了一些东西,直到它成为一个问题。

TLDR:这取决于。

关于c# - 查看不断变化的数据集的聚合的最佳架构选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567815/

相关文章:

c# - 如何关闭C#程序,从第二种形式(不是隐藏)C# Multiform issue

c# - 为 RESTful WCF 配置 SSL 绑定(bind)。如何?

c# - 文本流向更改的事件处理程序

c# - 防止在 DataGridView 中选择单元格

wpf - WindowChrome ResizeBorderThickness 问题

基于 WPF 的图形可视化

.net - 我们可以更改 Windows 中的事件路由策略吗?

c# - 错误: DbContext has been disposed

c# - 通过事件处理程序发送参数?

c# - 将新属性添加到 ASP.NET 下拉列表