我正在将一个旧的分数显示应用程序从VBNet WinForms移植到C#。 此应用程序采用伪XML格式的传入UDP数据,并在屏幕上很好地显示,供人们观看。
数据结构如下
<Stands>
<Event>On</Event>
<ST>10</ST>
<Extra>Off</Extra>
<Stand1> //there are six competitor stands in total
<SC>3</SC> //progress
<Name>Whareamu Whittaker</Name> //competitors name
<Loc>Masterton</Loc> //competitors home town
<Flag>New_Zealand.png</Flag> //flag to display
<BP>3.26</BP> //one category of points
<TP>3.14</TP> //another category of points
<PP>8.13</PP> //the last category of points
<Total>32.342</Total> //total points
<Colour>000000</Colour> //color to display
</Stand1>
<Stand2>
<SC>2</SC>
<Name>Tim 3</Name>
<Loc>Wallongong</Loc>
<Flag>New_Zealand.png</Flag>
<BP>9.36</BP>
<PP>7.23</PP>
<TP>3.74</TP>
<Total>38.999</Total>
<Colour>000000</Colour>
</Stand2>
<Stand3>....</Stand3>
<Stand4>....</Stand4>
<Stand5>....</Stand5>
<Stand6>....</Stand6>
不幸的是,我无法控制数据的格式,它是在UDP广播上进行的,并且没有正确的XML标题等,它看起来与上面的代码片段完全相同。
我收到这些数据,并在屏幕上看起来很漂亮。 该程序与事件视觉混合器相关联,并根据所在的摄像机显示屏幕上的分数。
数据通过网络每秒进行一次,我必须接收数据并显示它,对于几个屏幕,我还必须根据目前得分最低的人来订购竞争对手。
大多数编程都很简单,但我对如何存储所有这些传入数据有一个哲学/最佳实践问题。
当我在VB中构建它时,我以两种方式存储数据,我手动解析XML并将每个值的每个值存储在一个单独的变量中。这太可怕了。 然后我还创建了一个DataSet和DataTable,并将另一组数据复制到其中,我用它来快速重新排列竞争对手并在&#34; Totals Screen&#34;上显示。
我希望通过网络接收数据并将其存储在我可以排名的单个位置,并且在其他屏幕上显示也没有太大困难。 因为所有数据每秒更改一次,所以它需要是一种非常快速有效的方法,它还允许每秒重新排名一次。
我对你们如何从最佳实践的观点来看待这一点感兴趣。你会如何存储这类数据? 我对来自VBnet winforms背景的C#相对较新。我可以复制我在那里做的,但我已经知道它不是一个非常好的解决方案,所以如果我在C#中重写它的麻烦,我应该正确地做。