RCP实践之软件架构 与 RCP实践之第三方JAR包

RCP还是新兴的东西,大家都是用它做做小东东,所以在网上讨论RCP深度应用的文章还不多。
    在此作文N篇阐述一下我在项目中的实现思路,欢迎大家拍砖。
    首先看一下我们的项目的总体架构:
 


    这个图谁都会画,就不说了,只是说明我们在用RCP而已。
    再看看Client这层是怎么组成的:

    依赖关系是自上而下的~,当然大家都需要依赖RCP-RUNNTIME本身。
    jar plugin ---将第三方jar包包装成plugin样子,以供其他的插件依赖,解决了RCP项目对第三方包依赖麻烦的问题,例子:junit插件的实现;
    DMP Platform ---DMP是我们产品的名字,所以,不要立即google,在这层我们抽象的定义出大量的公共的CoolBar以及MenuBar,都是尚未实现的,以待业务扩充之用,最重要的是在这层中我们集中处理权限问题,后面会说到;
    业务组建(plugin)---其实就是针对于DMP Platform编写的一大堆的插件,而这些插件则是业务相对独立,这样就遵守了Eclipse的原则,所有东西都以插件形式提供的,也方便了我们以后对软件的定制化开发;

    纵观国内外RCP的应用(国内本身就是很少),很少有RCP应用使用Eclipse的思想进行开发的,都是一个项目直接上~就一个UI层~什么都有!如果是这样,还不如用VC,VB更简单~
    Eclipse RCP最好的应用还是Eclipse本身,Platform仅仅提供对文件的最简单的管理能力,而且定义一堆共用的Action,其他东西(JDT,ANT,JUNIT等等)都是以插件形式出现的~只有有了插件,才有了RCP业务动态扩充的动态组合的新理念。

 

  感谢大家对上一篇文章的拍砖,引起的反响不小,目的达到了~,希望可以继续板儿砖横飞!
    今天来说说第三方JAR包的引入。RCP开发(或者plugin开发)中最让人头疼就是第三方JAR包的引入了,很多初学的朋友常常头疼,介绍的文章也不少了,如果搞不定,自己google一下就可以了。
    为什么第三方JAR包会引发如此众多的问题,其实并不是Eclipse的错,而是先入为主的错。如果你一开始就就接触Eclipse开发,以后再做不同java开发,你就会觉得java的类加载机制是变态了~Eclipse的类加载机制是基于OGSI的实现,它完成了插件的独立加载和独立维护,正是因为这种变态的类加载机制,才有了我们头大的第三方jar包的问题,也正是这种伟大的类加载机制,才有了即插即用的思路的诞生。
    大多数简单的RCP项目都是将所有的JAR包放入本地项目中,然后直接进引入项目路径,就开始整了,对于小的应用,或者开发人员少的情况下,这样是可行的,也是便捷的~但是RCP的目标是大型的企业级应用,一个系统由十几个,几十个插件组成,是很正常的。所以就要求我们将RCP中所有用到的第三方JAR包统一管理,统一维护,给开发人员少一些烦恼。
    思路有两种:
1.将JAR文件plugin样子包装,及新建Plug-in from existing jar archives 项目,然后选择JAR文件,再取消Unzip the jar archives into the project 选项,然后其它的插件依赖它就可以了。
2.新建一个不同插件项目,然后把第三方JAR包放入这个项目,然后引入到此项目中,在plugin.xml的runtime配置页的Exported Packages 选Add... 再选择要发布出去的包路径,然后其他的插件依赖它就可以了。
    官方推荐的方式是第一种,个人认为第一种确实很好,可以非常好而且方便的维护第三方JAR包。但是我还是选择了第二种方式,理由是,配置文件读取的问题。
    每一个插件文件都会维护一份属于自己的配置文件,只有这样才能做到自我独立。但是这两种方式都不能使其他插件项目的配置文件独立维护,原因就是Eclipse那讨厌又强大的类加载机制。
    使用第一种方式,配置文件必须放在你记载的进来的JAR包的里面,这样Eclipse类加载机才会加载并处理,除非选择了Unzip the jar archives into the project 选项,并把配置文件和一堆的class文件放在同一目录下类加载机才能发现。我想这种方式谁都不会喜欢,要么就是我们要创造自己的JAR包,要么工作台遍布了各种各样来自世界各地的class文件。
    使用第二种方式,是通过运行时将需要发布出来供别人依赖的package发布出来,而配置文件则需要放在此插件项目中。相对而言,这种比上一种有很大的好处,而且也不是那么难维护。

    以上只是自己项目中的一些总结,关于第三方JAR包的问题,我查了很多资料,好像逃不过这三种方式(直接在项目中依赖算一种),不知道各位大侠还有没有更好的办法,即能处理好第三方JAR包,又能保持各个插件维护自己独立的配置文件?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值