Chasing an mobile web vision

闯荡在移动互联网的世界中

osgi介绍(二)一个假想的实例

如何分析OSGi service platform的机制?给出几个硬生生的例子,然后分析一下
代码?那还不如你自己看书看规范好了。因此,我觉得还是结合一个应用实例来分析会更
容易理解,当然,是一个假想的应用实例。用怎样一个实例呢?嗯......

几个月前,一个中学同学打电话给我说他们要在PDA上开发一个简单的应用程序来临时纪
录工作的结果,并向我咨询,这种开发的难度和周期。这事启发我了,就以PDA的应用为
背景,让我们来假想一个场景,从而来比较传统的应用模型与采用OSGi的应用模型有怎样
的区别。

我这样想象:
小李是一个软件工程师,在一家专门为PDA开发应用程序和解决方案的公司工作。最近,
他刚为公司的一个客户开发完成了一套运行在PDA的JAVA应用程序,我们不要关心PDA是
什么硬件配置,只要知道它配备了JVM(cvm) + CDC以及PP和文件系统(呵呵设备还是比较
强劲的)。而这个客户是一个慈善机构,该机构人员携带PDA进入偏远山区收集生活困难
家庭的信息,以准备进行资助。而这套程序将会暂时把家庭信息保存在PDA中,并随时供
用户查询修改。用户使用一个月后,反馈非常好,但是,他们有新需求了,说原来只是想纪录
信息就成了,现在希望能给出一些排序功能,比如按家庭年收入对纪录进行排序.

接到这个需求,小李一看,这个简单,只要增加一个排序方法就可以了,让我们假设他使用了如下
数据结构来纪录家庭信息:

Class FamilyInfo {

 
private String familyName;//家庭名称

 
private int population; //人口数量

 
private int incomePerYear; //年收入

 .(省略Getter和Setter方法)
}


 

为了满足这个需求,小李决定添加一个静态的排序方法:

public static FamilyInfo[] sortByIncomePerYear(FamilyInfo[] familyInfos){
 
//根据incomePerYear的值进行冒泡排序。
}



把相关连部分修改完毕后,小李重新制作了安装包和启动脚本,发送给客户,不管客户如何操作
总之,原来的PDA程序必须卸载,新程序必须拷贝到PDA上再次执行安装,重新启动运行。

又过了一阵,客户说,要求提供按人均年收入进行排序,然后同样的事情又发生了......

几个轮次下来,小李发现,客户的需求还在增加,他们可能要求增加一个字段,记录目前该
家庭得到的资助额,还可能添加按收入范围查询纪录等等,事情还远没有结束。

如何改进这个情况呢?当然,改进涉及多方面,比如从软件本身出发,可以使用合适的design
pattern重新设计程序的体系结构,使得程序更易于扩展,关于这一点,有太多的讨论了,我就不
掺和了。还有从部署方面说,配置,安装和卸载程序,对最终用户往往是一项mission impossible,
能否让应用程序自己升级,而用户只要点击一个"升级"来触发这个过程而已......

我想你当然知道我给的答案:OSGi,OSGi,OSGi!!!!

posted on 2006-02-14 15:39 勤劳的蜜蜂 阅读(4677) 评论(3)  编辑  收藏

评论

# re: osgi介绍(二)一个假想的实例 2007-06-21 16:43 hata

非常不错,对于理解OSGI很有帮助,谢谢你!茅塞顿开!
这个例子我会在以后教别人的时候用的!
别人问你什么是OSGI的时候很有说服力,不用干巴巴的说,就是....英文解释,没意义!有好的资料能早点发给我么?喜欢你的解释方式,我留下邮箱了,QQ,MSN也放这,希望你跟我联系!我叫hata.
Emal: hatalf@yahoo.com.cn
MSN: hatalf@hotmail.com
qq: 25831856  回复  更多评论   

# re: osgi介绍(二)一个假想的实例 2009-04-29 14:01 guest

非常不错

请楼主继续  回复  更多评论   

# re: osgi介绍(二)一个假想的实例[未登录] 2009-10-14 11:38

@guest
生动易解  回复  更多评论   


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


网站导航: