首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

从新演绎动态编译类,打造灵活多变的系统

2013-03-21 
重新演绎动态编译类,打造灵活多变的系统前端时间,写过一篇博文:《 C#动态编译,实现按钮功能动态配置》,里面

重新演绎动态编译类,打造灵活多变的系统

前端时间,写过一篇博文:《 C#动态编译,实现按钮功能动态配置》,里面提到了动态编译的好处,可以随时添加你要集成的功能,而不用去重新启动系统。如果系统超级大,启动需要半个小时甚至数个小时的话,用动态编译是极佳的选择。


动态编译的好处让我舍不得丢弃它,所以只好找方法来优化它了。既然每次点击需要编译,如果我把全部功能都一次性编译完毕,保存这个实例,然后每次点击,都通过这个实例去调用对应的方法,这样就完美解决了这一问题。 


不多说,上代码:

动态编译类 Evaluator:



  从新演绎动态编译类,打造灵活多变的系统  
从新演绎动态编译类,打造灵活多变的系统  从新演绎动态编译类,打造灵活多变的系统  从新演绎动态编译类,打造灵活多变的系统  从新演绎动态编译类,打造灵活多变的系统
从以上几幅图中,可以看到,功能按钮是动态生成的,位置、数量都是可以随时调整的。每个按钮的功能也是可配置的。这里面最主要的元素有3个,一是动态编译类Evaluator,二是配置文件,三则是写有功能的dll。看看配置文件吧:包括引用的dll,引用的命名空间(这是调用dll中的功能时用的),按钮大小、位置、间隔、排列方式(用于动态生成功能按钮)及调用代码(一般写的是调用的dll中方法的代码)。
具体的原理是:在系统启动时,根据配置文件,动态加载该dll,动态编译Evaluator类,而后就可以调用方法了。按钮是读取配置文件生成的,包括大小,位置,名字,显示文字及执行的代码等。编译的Evaluator类中的方法名称是按按钮名称,方法体则是按钮调用的代码内容。给按钮添加一个click事件,click事件是执行Evaluator的与按钮名称相同的方法,那么就相当于执行调用的代码了。而调用的代码,是访问dll中的某个方法,这样就完成了功能可配置。也完成了具体功能和原系统的解耦。因为他们之间没有必然的联系。只要配置文件中,没有对该dll进行引用配置,那么他们就一点关系也没有。灵活度大大提高。


上面主要说的是C/S结构方面,而对于Web菜单结构的配置则正符合热部署的情况。也是通过配置文件,把实际的功能性dll和项目进行了分离的动态安装。这点跟插件化开发同出一辙。插件的安装其实就是修改插件加载列表配置文件和copy插件所需要的dll及它所属的配置文件。 
在接下来的博文中,我会写有关热部署的例子。希望大家多多指点,多多支持。



热点排行