linkman

学习记录,兴趣方面:工控软件、C++编程、人机界面、嵌入式软件、可视化等

导航

关于VCF(Visual Component Framework)

    VCF是一个C++编写的开源项目,全名Visual Component Framework,中文名:可视化组件框架。在这里先把我这两天的学习体会记录一下。
   程序框架库应该可以算是系统级软件,它提供给用户一种相对固化的编程方式,进而简化系统编程。想想最开始在Win3.1下使用SDK开发程序的日子,我们真的应该感谢编出这些框架库的英雄们。
    最早且最流行的框架库应该是Borland公司的OWL库(早期的Borland公司推出的每一样东西都是极品)。再后来也是目前最流行的框架库就是MFC了,C++Builder中的VCL库也是非常有特色的。最能评价MFC和VCL的好坏的人,应该是侯捷,他分别写了《深入浅出MFC》和《深入浅出VCL》,对每个库的分析都是非常不错的。
    目前,随着计算机技术的发展,越来越多的人们对计算机的熟悉,框架库的数量和类别也越来越多,及外延也越来越广,以至于在某时,我们不知道某个库算不算框架库。就象前几天分析的WTL(它也变成开源项目了),以及目前名声在外的STL、BOOST、WXWINDOW等。他们也应该属于框架库吧。
    还有三个软件是非常值得一提的:
    1、AGG,一个类似于GDI+的2D图形库,写得非常的好,如果有空,我应该将前段时间分析AGG的经验写出来。
    2、LOKI库,就是那个写《C++设计新思维》的作者提供的,如果有空,我应该将前段时间分析LOKI的经验写出来。
    3、CPPUNIT库,一个单元测试的工具。
    谈了这么多,还是重点讲一下VCF本身吧。
    我看重并分析VCF的原因,应该是其RTTI功能,其次是它采用了比较先进的C++编程手法。
    由于我正在编写一个开源的工控软件,想编写一种通用的属性处理程序,编了很长时间没有进展,后来仔细分析了一下我的需求,才发现我想要实现的功能,其实就是一个RTTI的扩展功能,何不直接找一个具有RTTI功能的库来分析一下呢?于是上网查找,发现VCF对RTTI的实现是最完整、最符合我的需要的。而其它库,对RTTI的实现,要么不完整,要么实现方法太差。
    RTTI的实现,首先应该看语言本身对其的支持程度,象Delphi、C#、VB等语言本身就有Property属性的,对RTTI的实现相对就简单的多,而C++语言本身无支持Property的语法,而在CodeProject上看到的一些实现方法,都不是太好。
    昨天花了一晚上将VCF的帮助文档看完,并分析了其RTTI的实现方法,体会如下:
    1、由于VCF还处在开发阶段,其帮助文档很不完善,有许多内容都是空的;
    2、VCF的源码则非常清晰,不愧不大家手笔;
    3、VCF对RTTI的实现,包含在FoundationKit的RTTI目录中,包含了十多个文件,看其文件内容,其实现方法应该算是中规中矩的;
    4、VCF实现了如下RTTI功能:
        A、运行时查找对象所对应的类的名称、ID、描述;
        B、类的继承关系;
        C、Property功能;
        D、Event功能;
        E、Method功能;
        F、为属性编辑而实现的Enum功能;
        G、为属性编辑而实现的Item功能;
        H、运行时基于名称和ID的动态对象创建功能;
        I、Interface功能;
        J、运行时类信息的注册功能;
        等等。
    5、从功能上讲,这非常接近我的需求,但还差如下功能:
        A、基于属性的自动保存和读入功能(象Delphi那样);
        B、运行时提供属性的隐藏和恢复功能,虽然目前通过其运行时增加和删除属性可以变通实现,但实现起来不方便;
        C、属性的分层;
        D、重点属性的标注;
    6、另外,从其实现看,性能可能会是一个非常大的问题,因为其运行时对属性的访问都是通过名称来访问的,即便是通过UUID访问,也是通过UUID的字符串访问的,而实现上,在一个程序运行阶段,大部分类属性的访问是不需要通过名称来访问,而直接可以通过序号或编号来访问的。如果我想将它拿来用,一定要先对其性能进行重写。
    先写到这里,继续学习......   

posted on 2005-01-14 08:36  linkman  阅读(6215)  评论(4编辑  收藏  举报