(三)RI中的数据关系

      RI中的数据都是基于XML的,散落在以下几个地方:

StockTraderRI.Modules.Market模块:/Data:Market.xml和MarketHistory.xml

StockTraderRI.Modules.News模块:/Data:News.xml

StockTraderRI.Modules.Position模块:/Data:AccountPositions.xml

      我将其转换为DB中的同名表,它们之间的关系如下所示:

clip_image002

      注意到,以AccountPositions表为核心,通过TickerSymbol字段进行外键连接,AccountPositions和Market表之间是1对1的关系;而和MarketHistory、News表之间都是1对多的关系。

      让我们回到程序中,再观察一下Shell主程序中的模块加载顺序(同时参照下图):

protected override IModuleCatalog GetModuleCatalog()
{
    var catalog = new ModuleCatalog();
    catalog.AddModule(typeof(MarketModule))
        .AddModule(typeof(PositionModule), "MarketModule")
        .AddModule(typeof(WatchModule))
        .AddModule(typeof(NewsModule));

    return catalog;
}

      就是说,MarketModule的加载先于PositionModule。这是因为,在程序运行时,先加载PositionSummaryView这个GridView是毋庸置疑的,但是默认会选中其中的第一笔数据,那么在TrendLineView中必须有相对应的一笔数据显示出来,所以,MarketModule(也就是TrendLineView)的加载要先于PositionModule。

clip_image004

      一般而言,如果RI是由一个人完成的,那么他会根据用户操作的顺序来实现,那么第一个要完成的应该是Position模块的PositionSummaryView和PositionPieChartView(毕竟是用户最先看到的GridView,并根据这些数据进一步进行操作)。

      但是,如果我也按照这样的顺序来一边写一边向大家介绍RI,就展示不出Prism的优点了,即各个Team可以独自开发不同的模块,然后再无缝整合在一起。因此,在接下来的几章中,我会按照MarketàPositionàWatchàNews的顺序来逐一介绍并添加模块,并在Market完成后,介绍Prism下单元测试的具体操作。

 

posted @ 2009-07-13 01:06  包建强  Views(3062)  Comments(2Edit  收藏  举报