在本人的“.NET简谈插件系统开发模式”一文中咱们详细介绍了插件系统开发模式的优越性,尽管.NET平台或者第三方提供的平台都为咱们实现了底层插件原理模型,咱们能够在上面进行开发,做为一名有求知欲的程序员才是一名合格的程序员;咱们不能知足系统为咱们提供的功能,咱们要向下沉,沉的越深越好,躲开那些应用变化给咱们带来的劳累感,因此咱们是否须要掌握一些别人不会的技术,才能让咱们在众多的程序员中脱颖而出呢;[王清培版权全部,转载请给出署名]程序员
咱们今天来探讨“构件”系统开发模式,其实各类各样五花八名的设计模式开发模式追求的目标都是同样的,让咱们开发出来的软件系统能知足突飞猛进的变化,这样的变化可能来自应用需求、系统支撑需求、安全需求等等,只有具有以不变应万变的机制,咱们的软件才能在这样的环境中长期生存下去,软件工程的诞生为咱们带来了工程化的开发管理方式,其实咱们的软件系统不比那些高楼大厦开发简单,相比之下要复杂的多,亚历山大的“建筑的永恒之道”就想让咱们的建筑在时间的流逝中变得更完美,更古典更适合当前的环境;咱们的软件也是同样,尽可能作到以不变应万变的境界,可是这样的境界多是咱们很难达到的,不可能一劳永逸;技术的发展太快了,人的精力有限,没办法学会全部的东西,只能努力去作;设计模式
构件系统模型的思想在不少书籍中都提到过,让咱们的软件系统能经过不断组装来实现更新换代,将系统的实现分解成不一样的“构件”,本人正在用这种模式在开发一个本身的系统,以为前期的框架的很是耗时,可是以为这样的框架很稳定,在不断的维护更新下我能发挥出惊人的“机械感”,全部的零件都能拆卸、跟换、组装、运行,自我感受很好;咱们要把本身当成一名工程师,要让咱们设计出来的软件就比如那些“超跑”同样能在宽敞的大道上风靡起来,代码可能都同样,就要看怎么设计了,那些跑车机械工程师们都是咱们学习的对象,他们热爱本身的职业,咱们也要热爱本身的职业,程序员是值得骄傲的职业,至少我这么认为;安全
构件系统开发模式,能在不断螺旋变化中,适应新的环境或者说是恶劣的环境,咱们来看一副整体结构图:[王清培版权全部,转载请给出署名]框架
1:ide
将系统的全部功能点分解成不一样的构件,构件分解的粒度就要看我的技术经验了,因为不一样的系统粒度也不同;咱们经过构件头统一启动全部的构件,这些构件都可以无限向下传递实现,咱们公开一组程序的详细功能接口,而后由不一样的构件去实现,当实现好了以后咱们经过构件装配配置文件统一加载运行,配置文件只须要维护一层构件关系,就拿咱们上图讲,配置文件只须要维护构件1.一、1.二、1.3三个构件,而若是1.1构件未能实现它自己应该实现的功能则这部分的责任它本身负责,咱们会用同一构件接口作入口点,进入每个一级构件,后面的每一个一级构件的内部该怎么实现就怎么实现;[王清培版权全部,转载请给出署名]学习
2:spa
这是本人系统中的简单的结构设计图,咱们公布一组构件要实现的接口,而后让实现者去实现;构件系统和插件系统是有明显区别,构件系统是无限实现的,请看我项目的代码图:插件
3:设计
上图中,我将全部的构件都列出,要进行这种结构设计的朋友必定要很清楚本身的每一块的做用,不能多也不能少,多了就是祸害,少了就不完美致使每一个构件没法串联起来;为了进行这种结构设计,咱们少不了配置文件;3d
4:
因为大型的系统可能存在N多个构件,咱们有必要用XML命名空间进行区分以避免节点重名冲突;系统启动的时候咱们读取配置文件进行构件加载,下面咱们来看一下构件是怎么无限向下传递实现的;
5:
全部的一级构件是构件头所要负责加载运行的,而当控制权到了某一个构件内部的时候由该构件去加载它的字构件;这里有个问题你们须要特别注意,当父构件要让子构件去实现某些功能的时候,只须要公开一组接口就好了,让后经过接口名称加载子构件;