转自[王清培] http://www.cnblogs.com/wangiqngpei557/archive/2011/06/14/2080416.html

在本人的“.NET简谈插件系统开发模式”一文中我们详细介绍了插件系统开发模式的优越性,尽管.NET平台或者第三方提供的平台都为我们实现了底层插件原理模型,我们可以在上面进行开发,作为一名有求知欲的程序员才是一名合格的程序员;我们不能满足系统为我们提供的功能,我们要向下沉,沉的越深越好,躲开那些应用变化给我们带来的劳累感,所以我们是否需要掌握一些别人不会的技术,才能让我们在众多的程序员中脱颖而出呢;

我们今天来探讨“构件”系统开发模式,其实各种各样五花八门的设计模式开发模式追求的目标都是一样的,让我们开发出来的软件系统能满足日新月异的变化,这样的变化可能来自应用需求、系统支撑需求、安全需求等等,只有具备以不变应万变的机制,我们的软件才能在这样的环境中长期生存下去,软件工程的诞生为我们带来了工程化的开发管理方式,其实我们的软件系统不比那些高楼大厦开发简单,相比之下要复杂的多,亚历山大的“建筑的永恒之道”就想让我们的建筑在时间的流逝中变得更完美,更古典更适合当前的环境;我们的软件也是一样,尽量做到以不变应万变的境界,但是这样的境界可能是我们很难达到的,不可能一劳永逸;技术的发展太快了,人的精力有限,没办法学会所有的东西,只能努力去做;

构件系统模型的思想在很多书籍中都提到过,让我们的软件系统能通过不断组装来实现更新换代,将系统的实现分解成不同的“构件”,本人正在用这种模式在开发一个自己的系统,觉得前期的框架的非常耗时,但是觉得这样的框架很稳定,在不断的维护更新下我能发挥出惊人的“机械感”,所有的零件都能拆卸、跟换、组装、运行,自我感觉很好;我们要把自己当成一名工程师,要让我们设计出来的软件就好比那些“超跑”一样能在宽敞的大道上风靡起来,代码可能都一样,就要看怎么设计了,那些跑车机械工程师们都是我们学习的对象,他们热爱自己的职业,我们也要热爱自己的职业,程序员是值得骄傲的职业,至少我这么认为;

构件系统开发模式,能在不断螺旋变化中,适应新的环境或者说是恶劣的环境,我们来看一副总体结构图:


将系统的所有功能点分解成不同的构件,构件分解的粒度就要看个人技术经验了,由于不同的系统粒度也不一样;我们通过构件头统一启动所有的构件,这些构件均可以无限向下传递实现,我们公开一组程序的详细功能接口,然后由不同的构件去实现,当实现好了之后我们通过构件装配配置文件统一加载运行,配置文件只需要维护一层构件关系,就拿我们上图讲,配置文件只需要维护构件1.1、1.2、1.3三个构件,而如果1.1构件未能实现它本身应该实现的功能则这部分的责任它自己负责,我们会用同一构件接口做入口点,进入每一个一级构件,后面的每个一级构件的内部该怎么实现就怎么实现;


这是本人系统中的简单的结构设计图,我们公布一组构件要实现的接口,然后让实现者去实现;构件系统和插件系统是有明显区别,构件系统是无限实现的,请看我项目的代码图:


上图中,我将所有的构件都列出,要进行这种结构设计的朋友一定要很清楚自己的每一块的作用,不能多也不能少,多了就是祸害,少了就不完美导致每个构件无法串联起来;为了进行这种结构设计,我们少不了配置文件;


由于大型的系统可能存在N多个构件,我们有必要用XML命名空间进行区分以免节点重名冲突;系统启动的时候我们读取配置文件进行构件加载,下面我们来看一下构件是怎么无限向下传递实现的;


所有的一级构件是构件头所要负责加载运行的,而当控制权到了某一个构件内部的时候由该构件去加载它的字构件;这里有个问题大家需要特别注意,当父构件要让子构件去实现某些功能的时候,只需要公开一组接口就行了,让后通过接口名称加载子构件;

[王清培版权所有,转载请给出署名]

.NET简谈构件系统开发模式的更多相关文章

  1. .NET简谈插件系统开发模式

    摘选自[王清培]博客 http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html 今天跟大家分享一下我们在日常开发中并不 ...

  2. 浅谈Android系统开发中LOG的使用

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...

  3. 浅谈Android系统开发中LOG的使用【转】

    本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...

  4. 人人公益模式系统开发app

    人人公益模式系统开发app(微or电 158.1500.1390 小凡团队)人人公益系统开发,人人公益系统模式定制,人人公益系统开发模式,人人公益平台开发系统,人人公益APP系统开发. 深圳人人优益网 ...

  5. 一点公益二码公益开发模式系统源码App

    写这篇文章,是因为最近看到的一个著名的开源项目在内部使用时的各种问题,不得不说,很多的开源的东西思想是不错的,但离真正工程化都有不小的距离,所以没什么商业公司采用的开源产品如果要引入的话一定要慎重,通 ...

  6. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  7. 皮皮果模式系统开发app

    皮皮果系统定制开发,皮皮果网站系统开发. 皮皮果游戏横空出世,比QQ农场有过之而无不及,深得广大玩家喜爱.无论草根百姓还是达官贵人,都可以来学习娱乐的游戏.让你在娱乐中收获物质生活和精神生活,英伦果园 ...

  8. 果园种植系统开发App,游戏+商业模式?

    果园种植全返系统开发,英伦果园开发,微信果园种植系统开发,百果生态乐园开发,淘金农夫开发,农场果园种植游戏系统,果园种植APP系统开发,果园种植软件开发找陈牧150-1315-1740(微/电)开发者 ...

  9. 消费创富会开发模式系统App

    消费创富会系统定制开发,消费创富会网页开发模式,消费创富会开发软件,消费创富会系统APP开发,消费创富会平台模式开发,专业开发微信商城分销.公排.全返.分红.互助等模式定制开发,APP.网页版.微信端 ...

随机推荐

  1. 使用move_base导航 ---13

    摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 我们现在准备用move_base简单的移动机器人记住,一个“pose”在ros的意思是一个位置和 ...

  2. activiti 任务授权,把流程中当前任务授权个其他用户代为办理

    / * 授权代办 * @param serDoc / @Transactional(readOnly = false) public void authAgent(SerDoc serDoc) { S ...

  3. Android 中解析 JSON

    有什么不懂的可以去官网去看看:www.json.org 在google android中也有关于解析JSON的类库:JsonReader,但是只能在3.0以后的版本中才可以用,在这里我们用google ...

  4. phpwind将服务器数据同步到本地之后网站不显示或者排版错误

    在将phpwind的数据同步到本地服务器之后 如果访问本地服务器的首页不能显示的话 首先要查看global.php文件中的D_P变量,官方默认 的此变量应该指向和R_P变量是同一个文件夹即网站的根目录 ...

  5. Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  6. UBUNTU下SUBLIME TEXT3的安装+破解+汉化+中文输入

    一.Sublime Text3的下载安装 建议直接去官网下载最新版deb安装包:http://www.sublimetext.com/3 二.Sublime Text3的破解 3114版 -– BEG ...

  7. MicroSoft Visual C++ 6.0怎么建立C++文件工程?

    1.打开VC6.02.选择菜单中的"文件"->"新建",弹出"新建"对话框3.在"新建"对话框中选择四个Sheet ...

  8. SyntaxError: Non-ASCII character '\xe6'

    这是编码的问题,在文件第一行加上如下命令即可: #encoding: utf-8

  9. Oracle数据库——表的创建与管理

    一.涉及内容 1.掌握使用OEM工具创建.修改和删除表. 2.掌握使用SQL语句创建.修改和删除表. 3.掌握使用SQL语句插入.修改和删除数据. 4.理解各种约束的作用,并能够使用OEM工具和SQL ...

  10. 虚拟化之esxi命令行管理

    Vmware PowerCLI和Vmware CLI vMA A Linux virtual appliance that includes the vSphere SDK for Perl and ...