Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模仿性能监视器的数据结构_C#_Wpf_Data Structures - Fatal编程技术网

C# 模仿性能监视器的数据结构

C# 模仿性能监视器的数据结构,c#,wpf,data-structures,C#,Wpf,Data Structures,我正在为我们的软件开发一个定制的监控服务,它分布在几个系统上。我们已经决定在性能监视器中显示类似于报告视图的数据。 为了存储数据,我们使用一个非常简单的数据库表,它只保留最新的值: |Server|Object|Instance|Query|Value| 因此,每个值都可以通过服务器、对象、实例和查询进行唯一标识。 一个例子可能是 |Server| Object |Instance| Query |Value| +------+------------+--------+--

我正在为我们的软件开发一个定制的监控服务,它分布在几个系统上。我们已经决定在性能监视器中显示类似于报告视图的数据。

为了存储数据,我们使用一个非常简单的数据库表,它只保留最新的值:

|Server|Object|Instance|Query|Value|
因此,每个值都可以通过服务器、对象、实例和查询进行唯一标识。 一个例子可能是

|Server| Object     |Instance| Query     |Value|
+------+------------+--------+-----------+-----+
| Srv1 | Disk       |   C:/  | TotalSize |500GB|
| Srv1 | Disk       |   C:/  | FreeSpace | 50GB|
| Srv1 | Disk       |   C:/  | UsedSpace |450GB|
| Srv1 | Disk       |   C:/  | VolumeLbl |  OS |
| Srv1 | Disk       |   D:/  | TotalSize |900GB|
| Srv1 | Disk       |   D:/  | FreeSpace |700GB|
| Srv1 | Disk       |   D:/  | UsedSpace |200GB|
| Srv1 | Disk       |   D:/  | VolumeLbl | Data|
| Srv1 | Performance|   ---  | CpuUsage  | 12% |
| Srv1 | Performance|   ---  | MemUsage  | 34% |
| Srv1 | Performance|   ---  | Processes | 64  |
现在我们要将其转换为:

Srv1
    Disk             
                     C:/        D:/  
        TotalSize    500GB      900GB
        FreeSpace    50GB       700GB
        UsedSpace    450GB      200gb
        VolumeLbl    OS         Data            

    Performance      
        CpuUsage     12%
        MemUsage     34%
        Processes    64
我不知道应该用什么样的结构来存储它。 很容易看出对象(磁盘和性能)是服务器的子对象,但查询应该是实例的子对象,还是对象?在常规表中,每行是一个对象,列是该行的子对象。但我觉得在这种情况下应该是相反的,因为查询是实例的子对象。值应该存储在查询或实例下,还是应该是某种二维数组? 那么,基本上,实现这一点的最干净、最有效和最佳实践方法是什么


我们使用的是WPF,能够绑定到结构几乎是一项要求。因此,在CollectionChanged中仅使用ObservableCollections或自定义结构来实现这一点是第二个挑战。

我看不出这有什么复杂之处。。为什么不创建一个ViewModel,以希望在屏幕上显示的方式表示数据,然后用查询结果填充数据呢?出于几个原因,我们不使用MVVM。视图是动态的,我不知道如何在运行时表示这些动态列。也许是因为我把事情复杂化了……你说的“视图是动态的”是什么意思?您是否在运行时通过代码实例化所有UIElement?这在WPF中是完全不必要的。我看不到任何不使用MVVM的正当理由(在WPF中,在其他框架中不知道)。不使用MVVM的原因是应用程序从一开始就不是使用MVVM构建的,我们既没有时间也没有人力来证明重写一些有效的东西是合理的。所谓动态,我的意思是对象、实例和查询都是从数据库中检索的:一个对象可以有多个查询和实例,有些查询甚至可能对某些实例无效。如果我使用MVVM,模型和视图模型会是什么样子?我在寻找“我应该如何存储它?”这个问题的答案,而不是我应该使用哪个框架。我仍然没有看到困难。。只需创建一个ServerViewModel(如果您不想将其称为ViewModel,则将其称为其他名称),它将有一个对象列表,其中每个对象可能有一个实例、一个查询和一个值。。