Tuscany Home
 

WebX基于OSGi改造的可行性报告-影响因素

From Tuscany中文社区

Jump to: navigation, search

回到报告首页


从现在的开发方式转换到组件或模块(bundle)的开发方式,有一些影响因素,包括:学习时间、组件划分和开发难度等。

目录

[编辑] 学习时间

学习基于OSGi的开发肯定会花费一些时间的,我们几个做上面demo的同事从学习规范、学习写简单的例子,到研究WebX框架怎样转到OSGi上,用了大约6周的时间。这期间可能花在探索上的时间会多一些,等把培训文档和学习样例做得完备后,学习时间应该就会短许多,我们感觉最重要的是从思想上理解这种开发方式、不要有抵触情绪,这样学习就会快一些。

[编辑] 项目的开发周期

其实每个人对于组件化开发的好处都很清楚,尤其是像我们这样的大公司,尤其是像我们这样的产品运营模式,组件化开发的好处就更明显。组件化开发的优势是在开发了两三年之后、有了一定程度的组件积累以后才会明显的体现出来,而在开发的初期不但不会显现出优势,反而会比传统的开发方式花费更多的时间和人力。


在我们公司里,项目的开发周期一般很短,这样一来,项目的决策者尤其是项目经理就很不愿意采用组件化的开发方式,因为那样势必会延长项目的开发周期,加大项目的风险,因此建议通过其它措施来缩短项目的开发周期,或者对项目提前介入来抵消因为采用组件化的开发带来的“负面”影响。

[编辑] 组件划分

采用基于OSGi的组件化开发方式对系统的架构、设计提出了很高的要求,因为系统的每个部分都是一个组件,既要考虑组件间的依赖关系、部署方式,又要考虑组件的复用。组件粒度大了,开发容易了,但是复用性降低了;组件的粒度越小复用性越高,但是这时系统的复杂度提高了,因此需要在这之间寻找到一个平衡点,这就体现架构师、设计师的智慧和能力了。


另外,和以前避免系统间的环形依赖一样,组件间的组件依赖、包依赖一定也要避免环形依赖的问题。

[编辑] 开发难度

在开发上面demo的过程中,我们深深地感受到了环境的影响:


一方面,引用的类库。非OSGi的传统web应用里,需要引用的类库只要放到WEB-INF\lib里面就行了,在基于OSGi的web应用中,一个web应用要分成很多组件(bundle),可能在这些组件中都需要用到一些类库,如果把这些类库都分别放在各个组件中,就会出错,因为在整个OSGi中,相同的类库、相同的版本只能存在一个。因此需要把我们用到的类库打包成bundle,有些是官方提供了、有些是第三方提供了,其它的就需要我们把它打包成bundle,在我们做demo的过程中,很多的错误就是由这个引起的。因为在运行过程中我们打包的bundle还需要引用其它的类库,这样需要反复去尝试,直到没有错误为止。


一方面,开发方式。在以前WebX的开发中,整个系统可以作为一个工程,在新的OSGi的开发中,一个bundle作为一个单独工程存在,它可能需要依赖其它的bundle,依赖其它的package。一个bundle里,可以包括web的所有资源:jsp、html、xml、properties、class、jar等资源。



回到报告首页

Personal tools