惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Google DeepMind News
Google DeepMind News
S
Schneier on Security
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
Security Latest
Security Latest
Jina AI
Jina AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recorded Future
Recorded Future
T
Tor Project blog
有赞技术团队
有赞技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News | PayPal Newsroom
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
Forbes - Security
Forbes - Security
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
NISL@THU
NISL@THU
C
Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
Project Zero
Project Zero
IT之家
IT之家
T
Threatpost
Cyberwarzone
Cyberwarzone
O
OpenAI News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
J
Java Code Geeks
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
月光博客
月光博客
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - lichdr

高德地图热力图的Flutter实现 App消息推送的简单实现 nginx访问日志过滤(多条件) CAS的service参数验证 自定义Token的CAS登录 单元格的计算 表格行列的删除 表格行列的移动 FastReport的一些另类用法 FastReport分组页码 RFID会议签到系统总结(二十二)――系统中的模式 RFID会议签到系统总结(二十一)――服务端的通讯 RFID会议签到系统总结(二十)――数据窗体状态控制 RFID会议签到系统总结(十九)――单数据窗体 RFID会议签到系统总结(十八)――菜单与工具栏的加载 RFID会议签到系统总结(十七)――菜单与工具栏的改造(下) RFID会议签到系统总结(十六)――菜单与工具栏按钮的改造(上) RFID会议签到系统总结(十五)――管控端的窗体组织 RFID会议签到系统总结(十三)――模块概述(下)
RFID会议签到系统总结(十四)――管控端业务模块的加载
lichdr · 2007-07-10 · via 博客园 - lichdr

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

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

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

业务模块接口

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

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

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

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

再来看一下配置:

    <Services>

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

       <Service ...... />

       <Service ...... />

    </Services>

应用上面的配置加载,

模块加载

基本的架子就这样,细节方面以后再讲。