cforce

C++博客 首页 新随笔 联系 聚合 管理
  7 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

2012年7月7日 #

为了管理和使用组件,组件必须提供足够的信息,那么组件究竟需要提供哪些信息呢?
  1. 组件的ID,即唯一标识符,可以是数字或者字符串。其作用是标识组件,无论是组件管理器还是应用程序(组件使用者)都需要通过这个标识符来标识组件。
  2. 组件的构造方法,用于创建组件的实例。说白了,就是生成组件实例的函数。
以上两种信息是必须提供的,无论任何组件管理系统都离不开这两种必须的基本信息。组件自身也必须提供,否则无法使用。
可能大家会有疑问,为什么构造方法是必须的,而析构方法不是必须的呢?
是这样的,析构方法可以通过组件的实例提供的接口提供。COM里面的IUnkown接口中的Release方法就是个例子。不过组件自身提供析构方法也有其必要性。还是拿COM来做例子,COM虽然通过IUnkown接口提供了Release方法来控制对象的作用域,但是往往由于各种原因,造成某个对方未能及时释放,而该对象引用的对象也无法被释放,and so on,从而造成了COM应用的一个很让人头疼的问题,就一旦有内存泄漏,往往是成片成片的内存泄漏。这个问题很头疼,做过相关开发的同学应该深有体会。如果组件自身能提供析构方法,借助组件/对象管理器就有可能在适当的地方进行资源强制回收。XCA具备这一特性,XCA的组件必须提供析构方法。
除此之外我们还需要什么信息呢?我们来发散一下。
  • 组件所支持接口的描述
  • 组件的类别
  • 组件的描述信息。用于说明组件的用途
  • 组件的版本。不解释了。
  • 组件的版权信息
  • 组件的图标信息
这些信息还真不少,不过相信大家可以提出很多需求。要想做一个具备实用价值的组件管理系统,这些信息都有其价值,但如果强制要求用户提供,又不太合适。一方面对于某些应用来说其中有些信息不是必须的;同时对于另外一些应用来说有些信息可能又过繁冗了;同时还存在一种可能,就是这些信息虽然很丰富,但是还不够。
你看想做一个通用并且实用的组件管理系统,组件需要哪些信息都众口难调。这真是一个令人沮丧的现象。不过我们相信总有解决方案的。XCA在这方面处理的还不错。
posted @ 2012-07-07 18:27 cforce 阅读(233) | 评论 (0)编辑 收藏

2012年7月6日 #

什么是组件
个人的理解,组件是为了实现某个功能而整合在一起的方法及数据的集合,为了描述组件的特征组件中还包含一些描述信息,诸如组件的名称或ID,提供哪些接口,版本信息等。通常组件是以二进制文件提供的,但也可以以源代码的形式提供,只是这种情况不多见。

组件和类的关系
组件可以理解为类的超集,它可能包含若干个类,当然也可以只有一个类;此外组件往往需要提供一些额外的描述信息,供组件管理器管理,而类缺乏这些信息。类加上这些必要的信息,基本上就差不多等同于组件了。不过,通常组件是以二进制形式发布,而类是源代码层面的东西。

组件和对象的关系
组件是静态的代码和数据,而对象是动态创建的实体。二者的关系有点像class与对象。

接口是什么
简单的来说,接口可以理解为一种调用形式的约定。接口往往包含一系列的接口函数的描述。接口仅仅描述了这些函数的名称、返回值、调用约定、参数列表以及这些函数的顺序。但是接口并不实现这些函数,它仅仅是一种约定,或者说是一种描述,负责实现它的是对象。

这些概念挺枯燥的,但是为了后续介绍XCA的整体框架,不得不先把这些概念做个约定。
posted @ 2012-07-06 22:30 cforce 阅读(1481) | 评论 (0)编辑 收藏

简单的来说,接口可以理解为一种调用形式的约定。接口往往包含一系列的接口函数的描述。接口仅仅描述了这些函数的名称、返回值、调用约定、参数列表以及这些函数的顺序。但是接口并不实现这些函数,它仅仅是一种约定,或者说是一种描述,负责实现它的是对象。
posted @ 2012-07-06 15:25 cforce 阅读(447) | 评论 (0)编辑 收藏

组件是静态的代码和数据,而对象是动态创建的实体。二者的关系有点像class与对象。
posted @ 2012-07-06 15:25 cforce 阅读(319) | 评论 (0)编辑 收藏

组件可以理解为类的超集,它可能包含若干个类,当然也可以只有一个类;此外组件往往需要提供一些额外的描述信息,供组件管理器管理,而类缺乏这些信息。类加上这些必要的信息,基本上就差不多等同于组件了。不过,通常组件是以二进制形式发布,而类是源代码层面的东西。
posted @ 2012-07-06 15:24 cforce 阅读(492) | 评论 (0)编辑 收藏

先谈谈什么是组件吧。
个人的理解,组件是为了实现某个功能而整合在一起的方法及数据的集合,为了描述组件的特征组件中还包含一些描述信息,诸如组件的名称或ID,提供哪些接口,版本信息等。通常组件是以二进制文件提供的,但也可以以源代码的形式提供,只是这种情况不多见。
posted @ 2012-07-06 15:23 cforce 阅读(259) | 评论 (0)编辑 收藏

一直计划抽空把自己的可扩展组件框架(eXtensible Component Architecture)的设计思路整理一下,但由于各种原因计划一直搁置。
转眼间在工作岗位上十多年的光阴过去,也是时候重新审视一下自己走过的历程。未来未必会继续从事现在的职业,写下点东西,将来也好回忆一下。于是又动了这个念头,但不知道能不能坚持下去。花几天时间大概整理一下试试吧。
posted @ 2012-07-06 15:02 cforce 阅读(188) | 评论 (0)编辑 收藏

仅列出标题