我在决定如何构建我正在构建的应用程序时遇到一些麻烦。
应用程序需要解析基于文本的文件(每行一条记录)并将所有信息加载到内存中。通常有100,000到500,000条记录。之后,数据必须以表格和非常详细的图表/图表的形式显示,以便进一步分析。
用户必须能够自定义此数据的视图。例如,日志记录有许多不同的“类型”(TypeA_Log,TypeB_Log等)。用户应该能够选择/取消选择这些类型,这些类型将在显示中显示/隐藏它们。还有其他几种类型的过滤(按日期过滤等)
-
基本上我现在拥有的是:
我有一个表示各种类型日志记录的类结构。
有一个Singleton模式来保存所有数据(几乎像内存中的数据库),其中包括Lists<>日志记录实例。
然后,我有一个“过滤器”类,其中包含有关用户想要查看的内容的信息。 “过滤器”被传递到Data-Singleton,然后返回数据的子集。我基本上使用C#lambda表达式从List<>中选择数据。日志记录,类似于将SELECT语句传递给SQL数据库的方式。
-
这工作正常,但我不得不认为有更好的方法来解决这个问题。现在,只要用户进行最小的更改(例如,选择/取消选择多种类型的日志记录中的一种,就必须从Data-Singleton中检索新的数据集,然后所有的表格和图表都有要刷新/重新计算/重新计算以反映这种变化。在大多数情况下,我真正想做的就是显示/隐藏某些事情。
我正在使用C#.NET 3.5。
答案 0 :(得分:0)
您可以构建某种内部通知系统,也称为事件调度程序。
让我们说在一个表单中更改了记录,而不是重新加载其他依赖表单,您触发一些记录已更改的事件(使用一些自定义EventArgs附加记录),并让您的依赖表单决定事件处理应该他们在某处包含了这条新记录。您可以更新从属表单集合中已更改的数据。
但是,这可能会产生一些并发问题(当您避免使用数据库(在您的情况下为文本文件)时)...