PanTian 香草园主

关注软件产业的历史、现在、未来。 30而立,立志的立,新的开始……
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一个非常简单的“插件”架构

Posted on 2005-06-20 10:20  pantian  阅读(2782)  评论(21编辑  收藏  举报

这是一个很久以前做的小ERP的系统架构的一部分。虽然非常简单,但比较实用,写出来,供大家参考、拍砖。

背景:当时需要做一个小型的制造业ERP系统,但客户不按常理出牌,我们需要先做客户最急需的部门子系统,而这个系统是工作流中最后面的一个子系统。
很显然,整个工作流的前面的资料录入部分,暂时也只能放在最后一个子系统录入了。而且,考虑到以后的整个系统完成时,这些暂时放在后面子系统中的模块,肯定还需要再重新分配到前面的子系统中去。
所以,为了减少以后的重复劳动,考虑到各模块的灵活性,及开发方便性,我们决定使用插件架构。

幸好,在.net中有个很好用的特性:反射机制。这对于我们使用插件架构非常方便。
下面是最主要的代码部分:

 1  Assembly PlugProgram = Assembly.LoadFrom("A.dll");
 2
 3 Form frm = new Form();
 4 frm = (Form)PlugProgram.CreateInstance("A.Form1",true);
 5 frm.MdiParent = this;
 6 frm.Show();
上面的代码比较简单,就没写注释了。

完整的步骤如下:
1、把上面的代码放在主程序里。
2、将系统细分为多个子模块,每个开发人员具体负责一个(或多个)子模块的编写。
3、各开发人员为子模块单独建立项目,一切都按编写EXE文件的方式来进行,只是调试完毕,准备插入到主程序时,选择“输出类型”为“类库”即可。自然,会生成DLL文件。
4、最后,将所有子模块的DLL文件,与主程序放在一起。运行主程序,用上面的代码,在主程序里的菜单、工具栏、各种按钮中调用所需要的DLL文件。

呵呵,很简单的吧。