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