zoukankan      html  css  js  c++  java
  • (三)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下单元测试的具体操作。

  • 相关阅读:
    pip 或 pip3 升级操作
    virtualenv和virtualenvwrapper 的安装和使用
    打包 Framework 时使用 CocoaPods 引入第三方库的方法
    数据库-代码建表
    Oracle-数据库
    JAVA-网络编程
    JAVA-枚举
    JAVA-多线程
    0927-练习
    JAVA-流
  • 原文地址:https://www.cnblogs.com/Jax/p/1522193.html
Copyright © 2011-2022 走看看