.NET简谈构件系统开发模式
转自[王清培] http://www.cnblogs.com/wangiqngpei557/archive/2011/06/14/2080416.html
在本人的“.NET简谈插件系统开发模式”一文中我们详细介绍了插件系统开发模式的优越性,尽管.NET平台或者第三方提供的平台都为我们实现了底层插件原理模型,我们可以在上面进行开发,作为一名有求知欲的程序员才是一名合格的程序员;我们不能满足系统为我们提供的功能,我们要向下沉,沉的越深越好,躲开那些应用变化给我们带来的劳累感,所以我们是否需要掌握一些别人不会的技术,才能让我们在众多的程序员中脱颖而出呢;
我们今天来探讨“构件”系统开发模式,其实各种各样五花八门的设计模式开发模式追求的目标都是一样的,让我们开发出来的软件系统能满足日新月异的变化,这样的变化可能来自应用需求、系统支撑需求、安全需求等等,只有具备以不变应万变的机制,我们的软件才能在这样的环境中长期生存下去,软件工程的诞生为我们带来了工程化的开发管理方式,其实我们的软件系统不比那些高楼大厦开发简单,相比之下要复杂的多,亚历山大的“建筑的永恒之道”就想让我们的建筑在时间的流逝中变得更完美,更古典更适合当前的环境;我们的软件也是一样,尽量做到以不变应万变的境界,但是这样的境界可能是我们很难达到的,不可能一劳永逸;技术的发展太快了,人的精力有限,没办法学会所有的东西,只能努力去做;
构件系统模型的思想在很多书籍中都提到过,让我们的软件系统能通过不断组装来实现更新换代,将系统的实现分解成不同的“构件”,本人正在用这种模式在开发一个自己的系统,觉得前期的框架的非常耗时,但是觉得这样的框架很稳定,在不断的维护更新下我能发挥出惊人的“机械感”,所有的零件都能拆卸、跟换、组装、运行,自我感觉很好;我们要把自己当成一名工程师,要让我们设计出来的软件就好比那些“超跑”一样能在宽敞的大道上风靡起来,代码可能都一样,就要看怎么设计了,那些跑车机械工程师们都是我们学习的对象,他们热爱自己的职业,我们也要热爱自己的职业,程序员是值得骄傲的职业,至少我这么认为;
构件系统开发模式,能在不断螺旋变化中,适应新的环境或者说是恶劣的环境,我们来看一副总体结构图:
将系统的所有功能点分解成不同的构件,构件分解的粒度就要看个人技术经验了,由于不同的系统粒度也不一样;我们通过构件头统一启动所有的构件,这些构件均可以无限向下传递实现,我们公开一组程序的详细功能接口,然后由不同的构件去实现,当实现好了之后我们通过构件装配配置文件统一加载运行,配置文件只需要维护一层构件关系,就拿我们上图讲,配置文件只需要维护构件1.1、1.2、1.3三个构件,而如果1.1构件未能实现它本身应该实现的功能则这部分的责任它自己负责,我们会用同一构件接口做入口点,进入每一个一级构件,后面的每个一级构件的内部该怎么实现就怎么实现;
这是本人系统中的简单的结构设计图,我们公布一组构件要实现的接口,然后让实现者去实现;构件系统和插件系统是有明显区别,构件系统是无限实现的,请看我项目的代码图:
上图中,我将所有的构件都列出,要进行这种结构设计的朋友一定要很清楚自己的每一块的作用,不能多也不能少,多了就是祸害,少了就不完美导致每个构件无法串联起来;为了进行这种结构设计,我们少不了配置文件;
由于大型的系统可能存在N多个构件,我们有必要用XML命名空间进行区分以免节点重名冲突;系统启动的时候我们读取配置文件进行构件加载,下面我们来看一下构件是怎么无限向下传递实现的;
所有的一级构件是构件头所要负责加载运行的,而当控制权到了某一个构件内部的时候由该构件去加载它的字构件;这里有个问题大家需要特别注意,当父构件要让子构件去实现某些功能的时候,只需要公开一组接口就行了,让后通过接口名称加载子构件;
[王清培版权所有,转载请给出署名]
.NET简谈构件系统开发模式的更多相关文章
- .NET简谈插件系统开发模式
摘选自[王清培]博客 http://www.cnblogs.com/wangiqngpei557/archive/2011/06/10/2077413.html 今天跟大家分享一下我们在日常开发中并不 ...
- 浅谈Android系统开发中LOG的使用
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...
- 浅谈Android系统开发中LOG的使用【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...
- 人人公益模式系统开发app
人人公益模式系统开发app(微or电 158.1500.1390 小凡团队)人人公益系统开发,人人公益系统模式定制,人人公益系统开发模式,人人公益平台开发系统,人人公益APP系统开发. 深圳人人优益网 ...
- 一点公益二码公益开发模式系统源码App
写这篇文章,是因为最近看到的一个著名的开源项目在内部使用时的各种问题,不得不说,很多的开源的东西思想是不错的,但离真正工程化都有不小的距离,所以没什么商业公司采用的开源产品如果要引入的话一定要慎重,通 ...
- 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 皮皮果模式系统开发app
皮皮果系统定制开发,皮皮果网站系统开发. 皮皮果游戏横空出世,比QQ农场有过之而无不及,深得广大玩家喜爱.无论草根百姓还是达官贵人,都可以来学习娱乐的游戏.让你在娱乐中收获物质生活和精神生活,英伦果园 ...
- 果园种植系统开发App,游戏+商业模式?
果园种植全返系统开发,英伦果园开发,微信果园种植系统开发,百果生态乐园开发,淘金农夫开发,农场果园种植游戏系统,果园种植APP系统开发,果园种植软件开发找陈牧150-1315-1740(微/电)开发者 ...
- 消费创富会开发模式系统App
消费创富会系统定制开发,消费创富会网页开发模式,消费创富会开发软件,消费创富会系统APP开发,消费创富会平台模式开发,专业开发微信商城分销.公排.全返.分红.互助等模式定制开发,APP.网页版.微信端 ...
随机推荐
- 隐藏select最右侧的下拉三角图标的css样式
-webkit-appearance:none; -moz-appearance:none; appearance:none;
- timus 1982 Electrification Plan(最小生成树)
Electrification Plan Time limit: 0.5 secondMemory limit: 64 MB Some country has n cities. The govern ...
- HDU-3853 LOOPS(概率DP求期望)
题目大意:在nxm的方格中,从(1,1)走到(n,m).每次只能在原地不动.向右走一格.向下走一格,概率分别为p1(i,j),p2(i,j),p3(i,j).求行走次数的期望. 题目分析:状态转移方程 ...
- Java设计模式之责任链设计模式
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将所有处理对象连成一条链,并沿着这条链传递请求,直到有一个对象处理 ...
- OpenCV CommandLineParser 的用法
OpenCV CommandLineParser 的用法 去百度了一下,关键字:OpenCV CommandLineParser 发现,最多的讲解是:opencv源码解析之(5):CommandLi ...
- JSBinding + SharpKit / 需要注意及不支持的列表
1) 序列化不支持 public List<T>,其余都支持(JSBinding+Bridge无此功能) 2015年11月5日 补充:序列化只处理 Field.目前发现 Animation ...
- httpd-2.2
http://httpd.apache.org/docs/2.2/logs.html httpd.conf文件 Configuration and logfile names: If the file ...
- cocos2dx 2.x 在ios8下clippingNode不起作用 解决办法
升级xcode到6.1后,跑以前的cocos2dx 2.x写的项目,发现clippingNode失效了. 后来看到这个帖子,解决了我的问题:http://discuss.cocos2d-x.org/t ...
- 【转】Javascript+css 实现网页换肤功能
来源:http://www.php100.com/html/webkaifa/DIV_CSS/2008/1014/2326.html Html代码部分: 1.要有一个带id的样式表链接,我们要通过操作 ...
- Hive(一):架构及知识体系
Hive是一个基于Hadoop的数据仓库,最初由Facebook提供,使用HQL作为查询接口.HDFS作为存储底层.mapReduce作为执行层,设计目的是让SQL技能良好,但Java技能较弱的分析师 ...