思考插件架构体系

插件架构体系是我一直就非常关注的内容,其实插件架构体系的发展已经有很久的背景了,插件架构体系的优点我们也是能看的非常明显,象硬件一样的即插即用、无论对于公司还是业界而言的良好的积累方式、为公司或业界提供统一而规范的开发方式以及稳定的内核架构等等,这些优点无论对于公司还是业界来说都是非常重要的。
插件架构体系基本的一个概念就是基于松散的模块积累方式,通过新增插件以及扩展原有插件的方法来完成系统的实现,凡事有利必有弊,在看到插件架构体系的这些优点的同时,在实现和使用插件架构体系的时候仍然会碰到不少的问题,我大概的整理了一下,主要有:
1、插件的定义
      插件的定义可谓是插件架构体系在使用时会碰到的最大的问题,首先要解决的问题就是何谓插件、插件如何去定义?何谓插件这个大家的看法都会有所不同,由于对于何谓插件的看法不同,必然就导致了在整个系统的设计时采用了不同的设计方式,主要是在插件的粒度控制上会有不同的设计方式。
      个人觉得也许采用模块作为插件是一种可行的方案,采用模块作为插件的核心思想是按一种从顶至下的设计理念,也就是架构设计中产生的模块视图首先作为系统的插件构成视图,根据对模块的详细设计此时又可对模块的插件进行细一步的划分,或者是将插件划的更细,或者是采用插件的扩展机制去实现。
      插件的定义则是带来了一些设计上的难度的,我仍然觉得需要将插件视为黑盒去看,插件需要提供什么样的功能、插件需要什么样的运行环境、插件需要暴露哪些包等等,这个在Osgi中都有相应的映射,在基于插件架构体系进行系统构建的时候插件的粒度、定义我觉得这是最难把握的,甚至觉得难度上会超过以前的模块设计,需要的是更为规范的模块式的设计,觉得这个在中小型软件企业中往往是很难做到的,主要仍然是架构设计时的控制,在设计时重要的因素在于保持系统的松散结构,至于概要设计时则完全可按照架构设计的约束去进行,详细设计则完全和平时的做法一样。
2、插件的依赖
      插件的依赖主要有两种,一是对于系统已有插件的依赖,另一方面则是对于外部jar包的依赖。这都是在设计时需要做出考虑的,对于插件架构体系而言对已有插件的依赖和对外部jar包的依赖这个差别就比较大了,其实这个在设计上还好办,因为可以通过重构,本来一直依赖觉得最困难的是对其他插件的依赖怎么办,难道要去引用其他plugin的lib,在eclipse ide中是解决了这个问题的,所以现在来说插件的依赖在插件体系架构中就显得没那么困难了,这说明插件的依赖的解决依赖于一个良好的插件开发IDE。
3、插件的测试
      插件的测试我这指的不是运行的功能测试,而是单元测试,感觉这个在现在的插件架构体系里还是比较困难的,因为在一种松耦合的架构体系中,对于其他插件的依赖是要在容器运行期才能够获取的,觉得这个有点变成了当时ejb container的问题,现在好像得通过mock以及其他的方法去解决,另外一个也许是IoC的策略?这方面需要进一步思考,
4、插件的调试
      插件的调试主要是依赖容器的调试,现在的eclipse ide已经支持插件的调试,并且好像是支持插件的远程调试的。
5、插件开发学习的门槛
       就目前来说插件开发学习的门槛并不算低的,个人觉得至少要对插件体系架构有一定的了解(例如基于Osgi的插件框架,那就要求对OSGI有一定的熟悉),但相对这个门槛而言,其获得的价值是值得的。

其实讲了这么些问题,集中的主要在于基于插件架构体系的应用框架以及业务系统的设计方式将和以前的会有些变化,这个也是可以理解的,毕竟是受技术架构约束的,另外一方面则主要集中在插件开发的简易性和质量的保证,这个就得依靠一个强大的插件开发IDE。

posted on 2005-11-15 11:09 BlueDavy 阅读(7068) 评论(10)  编辑  收藏 所属分类: Plugin Architecture系统设计

评论

# re: 思考插件架构体系 2005-11-15 13:53 fisher

也许你该看看eclipse的Equinox项目
我很想仔细看看,可是一直没时间
:(  回复  更多评论   

# re: 思考插件架构体系 2005-11-15 14:42 Programmer's Life

呵呵,我已经在用了!
但其实不管用哪种,上面的这些问题仍然会有部分存在的,这是架构体系带来的问题。  回复  更多评论   

# re: 思考插件架构体系 2005-11-15 20:11 fisher

哦?用于做什么?  回复  更多评论   

# re: 思考插件架构体系 2006-02-26 17:52 JC

IMO, 我觉将插件架构上升到构件架构更为合适。
因为构件架构其实已经包含了构件插口(Component socket)的概念。
by the way, 可以留下你的联络方式交流一下吗?   回复  更多评论   

# re: 思考插件架构体系 2006-02-27 21:41 BlueDavy

MSN:
bluedavy@hotmail.com  回复  更多评论   

# re: 思考插件架构体系 2006-08-30 10:18 guangqing

为什么说,extension对于eclipse那么重要,而osgi却不提供bundle的扩展机制吗,然后就是因为它提倡通过service来交互,而eclipse却一些自己的需求,比如它是一个open的平台,这样可以方便大家做contribution?  回复  更多评论   

# re: 思考插件架构体系 2006-08-30 22:52 BlueDavy

做为插件框架而言提供扩展点机制很关键....  回复  更多评论   

# re: 思考插件架构体系 2006-08-31 09:35 guangqing

OSGi core framework不也可以说是一个插件框架么?还有,对于一般的应用而言,比如J2EE应用,有没有这种必要性为这些应用提供可扩展机制呢?听说WAS 6.1利用Eclipse extension机制已经可以为J2EE应用提供可扩展功能,但我还不知道具体的表现形式,因为没有找到sample看  回复  更多评论   

# re: 思考插件架构体系 2006-08-31 10:37 BlueDavy

为什么说对于插件框架而言扩展点特别重要呢,因为框架都是要具备开放性,而开放性的框架是需要通过提供扩展的方式来使得开发人员能够基于框架构建出真正的应用系统。
Equinox的server-side app就提供了一种扩展点的方式来实现新的servlet和资源文件的注册。  回复  更多评论   

# re: 思考插件架构体系 2008-11-20 17:15 西南三少

在本人所开发的好服组件服务器中,用到了插件化架构思想、反谢方式动态载入DLL、程序域等等思想和技术。
有兴趣请看:http://www.soa365.com/techblog/article_view.aspx?art_id=70  回复  更多评论   


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


网站导航:
 

公告

 









feedsky
抓虾
google reader
鲜果

导航

<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

统计

随笔分类

随笔档案

文章档案

Blogger's

搜索

最新评论

阅读排行榜

评论排行榜