yangbutao

 

浅析扩展点(Extension Point)

 

浅析扩展点(Extension Point

 

一、概述

扩展(Extension)是很多可扩展项目中一个关键的机制,可以利用扩展向平台添加新功能。但是扩展不能随意地创建,必须按照扩展点(Extension Point)定义的规范进行明确的声明,平台才能识别出这些扩展。所谓扩展点,就是系统定义出来可以让你扩展的地方,可以认为是一些扩展的契约,而扩展,这是你对这些扩展点的实现,当然你自己的插件也可以定义扩展点供别的开发人员扩展。

下面是扩展点的概念图

二、Eclipse中的应用

对于扩展,Eclipse采用Extension Point的方式来实现,每个Plugin可定义自己的Extension Point,同时也可实现其他PluginExtension Point,在Eclipse中通过在plugin.xml中进行描述,描述的方法为通过的形式来定义Plugin的扩展点,通过的形式来定义实现的其他Plugin的扩展点,所提供的扩展点通过schema的方式进行描述,详细见eclipse extension-point schema规范,为了更好的说明扩展点这个概念,举例如下,如工具栏就是工具栏Plugin提供的一个扩展点,其他的Plugin可通过此扩展点添加按钮至工具栏中,并可相应的添加按钮所对应的事件(当然,此事件必须实现工具栏Plugin此扩展点所要求的接口),工具栏的Plugin将通过callback的方式来相应的响应按钮的动作。可见通过Extension Point的方式可以很好的提供Plugin的扩展方式以及实现扩展的方式。

Eclipse中的extension point

<extension

         id="com.primeton.studio.builder"

         name="EOSBuilder"

         point="org.eclipse.core.resources.builders">

可以在这里自由的按照定义的xsd,实现扩展点

<extension/>

平台会在启动的过程中,注册各个扩展点(IExtension point),及扩展点的实现(IExtension),

运行时,由主线解析IExtension,回调扩展点的实现,当然扩展实现必须遵循扩展点的接口契约。

三、tuscany sca容器中的应用

tuscany中对SCA扩展机制包含了4个方面的扩展,有implementaion扩展,binding扩展,interface扩展,databinding扩展。由此来支持sca对不同协议,实现,不同访问接入方式。

Ø         扩展点StAXArtifactProcessorExtensionPoint:产生静态组装信息的扩展点

composite模型的组装阶段,,这里有4个上面定义的扩展,在此基础上,用户的扩展实现遵循标准契约,通过实现相应的契约,由系统对契约的实现做回调,来组装成完整的composite对象模型。

Ø         扩展点ProviderFactoryExtensionPoint:产生运行时(runtime)信息的扩展点

composite的模型的激活阶段,生成运行时的信息。实现类似于组装时的扩展。

以上的过程都是一次载入的,为了节省启动的时间,可以用懒加载来实现,composite的激活可以放在用户调用阶段。

ProviderFactoryExtensionPoint定义的契约如下图所示:

posted on 2007-09-27 09:09 阿不 阅读(11933) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜