• RFID会议签到系统总结(十四)――管控端业务模块的加载


     

    从上面我们知道现在管控端不再是一个孤零零的应用程序,而是由一些模块组成的,这些模块可能会根据不同情况有各种的组合,这样程序中就不能把模块写死了,而是得动态加载,反射又要派上用场了。

    本来想如一些应用一样把业务模块当成是一个个的插件,然后把相应程序集放入类似于Plugins的目录,程序启动时到相应目录去寻找相应程序集这样的机制来加载的。但考虑到业务模块不会很多,引用的程序集也不会很复杂,可以预见以后也不会增加很多,为了简便起见,现把所有的程序集都放在应用程序根目录下。虽然可能会发生版本冲突之类的问题,但对于一个相对简单的应用来讲应该是合适的。

     

    这里的东西其实没什么新意,整个做法跟前面硬件访问是如出一辙的。首先所有可被管控端加载的业务模块要实现如下的接口:

    业务模块接口


    Context:这里主要就是存放各个业务模块加载时需要的主程序的菜单、工具栏。

    LoadCommand:加载这个业务模块所具有的菜单、工具栏,具体做法下面几篇会讲到。

    InitializeFinalize:加载模块时除菜单、工具栏外其他一些需要的工作可以在这里完成。比如签到控制模块,通讯端口的开启与关闭。

    RegisterMothod:业务模块对于主程序来讲是不可知的,这里可以注册一些方法让主程序调用到它的方法。这是后来加的功能,没有设计好,用了一个Hashtable来存放各个模块的方法委托,好在用得上的地方不是很多。

     

    再来看一下配置:

        <Services>

           <Service Order="1" Name="SignInService" Startup="BCSMService.SignInSrv.SignInRunner,SignInSrv" />

           <Service ...... />

           <Service ...... />

        </Services>

     

    应用上面的配置加载,

    模块加载


     

    基本的架子就这样,细节方面以后再讲。
  • 相关阅读:
    Java Web之Servlet入门篇(二)
    『一本通』KMP算法
    P2865 [USACO06NOV]Roadblocks (次短路)
    字符串算法
    『一本通』哈希和哈希表
    『一本通』广搜的优化技巧
    [SCOI2011]糖果(差分约束系统)
    『一本通』二分与三分
    『一本通』贪心
    『P1122』最大子树和
  • 原文地址:https://www.cnblogs.com/lichdr/p/812484.html
Copyright © 2020-2023  润新知