DFC开发平台的设计理念

原创
2012/12/14 10:31
阅读数 2.9K
写的不好,求拍砖:)
 
目录
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

展开阅读全文
加载中

作者的其它热门文章

打赏
2
19 收藏
分享
打赏
6 评论
19 收藏
2
分享
返回顶部
顶部
返回顶部
顶部