这是一个很久以前做的小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();
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文件。
呵呵,很简单的吧。