目录
0、怨念的平台
0、怨念的平台
1、趋利避害——DFC概述
2、DFC三剑客之Dust
3、DFC三剑客之Farm
4、DFC三剑客之Crop
5、DFC的野心
6、传送门
=======================
0、怨念的平台
对于软件人员来说,年头多了,自然而然的沉淀了自己的一些代码库,如读取配置文件之类,用的时候手到擒来,倒也方便。对于公司来说呢,年头多了,
也会积累自己家的一些库,以源代码的形式,或是更多的封装成库。当然也不乏逐渐发展出开发平台的,其中多是从业务出发,综合产品特点,提炼出符合自身的开
发环境。
平台的优势在于使用经过大量实践检验的代码,减少了底层产生bug的几率,使开发人员将重心放在业务层面。但由于多方原因,也有一些五花八门的缺点散落其中。
比如文档缺失或与更新不及时,导致新同学严重郁闷;
比如配置繁琐,开放给开发人员和运维人员的配置项掺杂在一起;
比如平台定制性不强,模块多而广,平白多了大量无关代码在其中;
再比如平台版本更新速度快,假设产品A已经成熟,用的是较旧的平台版本,再有新的升级需求时,就会在新旧版本间无所适从,用旧的会导致维护两个平台版本,用新的又得完整测试一遍;
……等等等等,诸如此类。
尽管砌了漫天的缺点,但是平台带来的高效开发依然诱惑着同学们。不过缺点终究是缺点,解决了才会变成优势。有同学说了,那该怎么办呢?别急,DFC来了....咳
1、趋利避害——DFC概述
DFC是Dust、Farm和Crop的缩写,意为尘土、田地到庄稼的层次结构。概括地说,Dust是平台源码,Farm是开发平台,Crop是运行环境。
DFC将整个开发周期划分为三部分。
一个是底层支撑层,比如配置读写、通信管理、内存管理、程序外部控制、日志管理等等,提供了系统运行所需的基础元素,正如庄稼离不开土壤一样,这便是Dust的含义。
二是Farm,为核心业务层,在这一层开发者更专注于业务逻辑的实现,只管修枝剪叶,而无需关心土壤水质等。
最后,经过Dust、Farm及时间的综合影响,Crop得以蛋生。Crop将是一个名字里带有版本信息的压缩包。被交付给客户或是运维人员后,仅需简单的步骤就可以使系统运行起来,这些归功于万能的脚本。
说了半天,还是没有解决上面散列的平台缺点。莫慌,接下来让我们依次来看看DFC的三剑客是如何剑花乱舞的。
2、DFC三剑客之Dust
首先,为了兼顾可扩展性,Dust被设计为一个基础模块的集合,如通信模块、日志模块、错误管理模块、与外部通讯模块等,Dust的开发人员可以很方便的集成新的模块到Dust中,并提供API给Farm的使用者。
Dust采用TDD开发模式,每个模块都有相应的测试代码,只需运行一个测试脚本即可完成所有事先编好的测试用例,模块的每次发布和升级都要通过测试用例的‘洗礼’。这样,最大程度的保证了模块的可用性,也减少了模块升级带来的潜在bug。
可定制性是Dust的另一个特点,通过编译开关的使用,可以让Dust成为几乎完全可组装的,Transformers,想变成啥,就变成啥,随心而定。它可以变得无所不能,也可以精简的只剩一颗小心脏。
出于版本管理的考量,Dust为每个模块都设定了一个版本,同时Dust有一个整体版本,这样,
Dust版本与各模块的版本建立了对应关系
,方便版本回溯、bug追踪等需求。
通过执行Dust中的脚本,可以很方便的生成开发平台Farm。
3、DFC三剑客之Farm
Farm提供了简单的接口(仅仅两个)让用户增加自己的业务代码,这让刚刚接触该平台的新同学有一个明显的着手点。
为了解决代码和文档‘分家’的情况,我们需要在Dust各模块头文件的每个对外接口中,详细描述该模块的功能及各接口函数。
Dust的各个模块接口对于Farm的使用者是开放且简单的,Farm的使用者仅需阅读各模块的头文件即可迅速上手。
Farm使用automake自动生成可执行文件,如果增加了新的文件,只需将文件名写Makefile.am即可,省去了繁复的makefile的编写工作。
关于配置混乱的问题,DFC的解决办法是:开发人员和运维人员是使用同一套配置文件的,但在
配置文件内对配置项的使用者进行了区域划分。
与Dust一样,通过执行Farm中的脚本,可以将可执行文件、配置文件、辅助工具等迅速打包为发布介质Crop。
4、DFC三剑客之Crop
交付到用户手中的Crop,使用方法是极其简单的,就像是一把伞,一按按钮,‘嘭’(而非432.4Hz的mac‘咚’)的一声就能打开用了。
DFC的一个开发原则是,
一切皆日志。不出问题尚可,一旦出了问题,用户只需将日志发给开发人员,即可快速定位问题所在,尽可能减少开发人员的直接维护或培训工作。
正如Crop的简单易用,本节的文字也是最精简的。
5、DFC的野心
不幸的是,现在的DFC还仅仅支持linux下的C语言开发,对于linux下的C++开发还有待验证和完善,向win平台及其他平台的移植还望 各位喜欢敲键盘的同学多多关注。另外,Dust的底层模块仍有很大的扩展空间,如果看到这里的你有好的创意或需求,非常期待看到您的email飞到这里: shiluo.110#163.com .
6、传送门
DFC的oschina主页:http://www.oschina.net/p/dfc
DFC的github主页:https://github.com/bbdlg/dust