我需要决定编写 C# 客户端应用程序的最佳方式,以便在多个不同的 View 中查看数据集。一个、部分或全部 View 可以同时可见,并且必须是连贯的。 数据集的简化说明如下所示,假设大约有 10000 个项目。
基于此数据集,必须计算许多聚合,例如每个 ItemId 和每个 ClientId 的值之和。实际计算有点复杂,但假设必须计算大约 30 个不同的聚合。
任何时候都会有大约 10 个客户端查看数据。每个用户将决定数据是持续更新还是自动刷新。
数据存储在 SQL Server 2008 R2 中,所有客户端都可以直接访问该数据,并且位于同一 LAN 上。
UI 需要是非阻塞的,以便可以在后台读取新数据,并在计算完所有聚合后刷新事件 View 。
- 哪种架构/技术/模式最适合这种场景?
- 我应该使用 WPF、Windows 窗体还是 Silverlight?
- 应该在服务器上预先计算 View 还是应该由客户端进行此处理?
- 客户端应该直接连接到数据库还是通过 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/