通过UDP存储快速入站XML的最佳方法

时间:2016-01-31 23:26:33

标签: c# xml wpf udp

我正在将一个旧的分数显示应用程序从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标题等,它看起来与上面的代码片段完全相同。

我收到这些数据,并在屏幕上看起来很漂亮。 该程序与事件视觉混合器相关联,并根据所在的摄像机显示屏幕上的分数。

这是我如何展示它的一个例子...... One of the display Screens showing a single competitor

数据通过网络每秒进行一次,我必须接收数据并显示它,对于几个屏幕,我还必须根据目前得分最低的人来订购竞争对手。

大多数编程都很简单,但我对如何存储所有这些传入数据有一个哲学/最佳实践问题。

当我在VB中构建它时,我以两种方式存储数据,我手动解析XML并将每个值的每个值存储在一个单独的变量中。这太可怕了。 然后我还创建了一个DataSet和DataTable,并将另一组数据复制到其中,我用它来快速重新排列竞争对手并在&#34; Totals Screen&#34;上显示。

我希望通过网络接收数据并将其存储在我可以排名的单个位置,并且在其他屏幕上显示也没有太大困难。 因为所有数据每秒更改一次,所以它需要是一种非常快速有效的方法,它还允许每秒重新排名一次。

我对你们如何从最佳实践的观点来看待这一点感兴趣。你会如何存储这类数据? 我对来自VBnet winforms背景的C#相对较新。我可以复制我在那里做的,但我已经知道它不是一个非常好的解决方案,所以如果我在C#中重写它的麻烦,我应该正确地做。

0 个答案:

没有答案