Chasing an mobile web vision

          闖蕩在移動(dòng)互聯(lián)網(wǎng)的世界中

          osgi介紹(二)一個(gè)假想的實(shí)例

          如何分析OSGi service platform的機(jī)制?給出幾個(gè)硬生生的例子,然后分析一下
          代碼?那還不如你自己看書(shū)看規(guī)范好了。因此,我覺(jué)得還是結(jié)合一個(gè)應(yīng)用實(shí)例來(lái)分析會(huì)更
          容易理解,當(dāng)然,是一個(gè)假想的應(yīng)用實(shí)例。用怎樣一個(gè)實(shí)例呢?嗯......

          幾個(gè)月前,一個(gè)中學(xué)同學(xué)打電話給我說(shuō)他們要在PDA上開(kāi)發(fā)一個(gè)簡(jiǎn)單的應(yīng)用程序來(lái)臨時(shí)紀(jì)
          錄工作的結(jié)果,并向我咨詢(xún),這種開(kāi)發(fā)的難度和周期。這事啟發(fā)我了,就以PDA的應(yīng)用為
          背景,讓我們來(lái)假想一個(gè)場(chǎng)景,從而來(lái)比較傳統(tǒng)的應(yīng)用模型與采用OSGi的應(yīng)用模型有怎樣
          的區(qū)別。

          我這樣想象:
          小李是一個(gè)軟件工程師,在一家專(zhuān)門(mén)為PDA開(kāi)發(fā)應(yīng)用程序和解決方案的公司工作。最近,
          他剛為公司的一個(gè)客戶開(kāi)發(fā)完成了一套運(yùn)行在PDA的JAVA應(yīng)用程序,我們不要關(guān)心PDA是
          什么硬件配置,只要知道它配備了JVM(cvm) + CDC以及PP和文件系統(tǒng)(呵呵設(shè)備還是比較
          強(qiáng)勁的)。而這個(gè)客戶是一個(gè)慈善機(jī)構(gòu),該機(jī)構(gòu)人員攜帶PDA進(jìn)入偏遠(yuǎn)山區(qū)收集生活困難
          家庭的信息,以準(zhǔn)備進(jìn)行資助。而這套程序?qū)?huì)暫時(shí)把家庭信息保存在PDA中,并隨時(shí)供
          用戶查詢(xún)修改。用戶使用一個(gè)月后,反饋非常好,但是,他們有新需求了,說(shuō)原來(lái)只是想紀(jì)錄
          信息就成了,現(xiàn)在希望能給出一些排序功能,比如按家庭年收入對(duì)紀(jì)錄進(jìn)行排序.

          接到這個(gè)需求,小李一看,這個(gè)簡(jiǎn)單,只要增加一個(gè)排序方法就可以了,讓我們假設(shè)他使用了如下
          數(shù)據(jù)結(jié)構(gòu)來(lái)紀(jì)錄家庭信息:

          Class FamilyInfo {

           
          private String familyName;//家庭名稱(chēng)

           
          private int population; //人口數(shù)量

           
          private int incomePerYear; //年收入

           .(省略Getter和Setter方法)
          }


           

          為了滿足這個(gè)需求,小李決定添加一個(gè)靜態(tài)的排序方法:

          public static FamilyInfo[] sortByIncomePerYear(FamilyInfo[] familyInfos){
           
          //根據(jù)incomePerYear的值進(jìn)行冒泡排序。
          }



          把相關(guān)連部分修改完畢后,小李重新制作了安裝包和啟動(dòng)腳本,發(fā)送給客戶,不管客戶如何操作
          總之,原來(lái)的PDA程序必須卸載,新程序必須拷貝到PDA上再次執(zhí)行安裝,重新啟動(dòng)運(yùn)行。

          又過(guò)了一陣,客戶說(shuō),要求提供按人均年收入進(jìn)行排序,然后同樣的事情又發(fā)生了......

          幾個(gè)輪次下來(lái),小李發(fā)現(xiàn),客戶的需求還在增加,他們可能要求增加一個(gè)字段,記錄目前該
          家庭得到的資助額,還可能添加按收入范圍查詢(xún)紀(jì)錄等等,事情還遠(yuǎn)沒(méi)有結(jié)束。

          如何改進(jìn)這個(gè)情況呢?當(dāng)然,改進(jìn)涉及多方面,比如從軟件本身出發(fā),可以使用合適的design
          pattern重新設(shè)計(jì)程序的體系結(jié)構(gòu),使得程序更易于擴(kuò)展,關(guān)于這一點(diǎn),有太多的討論了,我就不
          摻和了。還有從部署方面說(shuō),配置,安裝和卸載程序,對(duì)最終用戶往往是一項(xiàng)mission impossible,
          能否讓?xiě)?yīng)用程序自己升級(jí),而用戶只要點(diǎn)擊一個(gè)"升級(jí)"來(lái)觸發(fā)這個(gè)過(guò)程而已......

          我想你當(dāng)然知道我給的答案:OSGi,OSGi,OSGi!!!!

          posted on 2006-02-14 15:39 勤勞的蜜蜂 閱讀(4688) 評(píng)論(3)  編輯  收藏

          評(píng)論

          # re: osgi介紹(二)一個(gè)假想的實(shí)例 2007-06-21 16:43 hata

          非常不錯(cuò),對(duì)于理解OSGI很有幫助,謝謝你!茅塞頓開(kāi)!
          這個(gè)例子我會(huì)在以后教別人的時(shí)候用的!
          別人問(wèn)你什么是OSGI的時(shí)候很有說(shuō)服力,不用干巴巴的說(shuō),就是....英文解釋,沒(méi)意義!有好的資料能早點(diǎn)發(fā)給我么?喜歡你的解釋方式,我留下郵箱了,QQ,MSN也放這,希望你跟我聯(lián)系!我叫hata.
          Emal: hatalf@yahoo.com.cn
          MSN: hatalf@hotmail.com
          qq: 25831856  回復(fù)  更多評(píng)論   

          # re: osgi介紹(二)一個(gè)假想的實(shí)例 2009-04-29 14:01 guest

          非常不錯(cuò)

          請(qǐng)樓主繼續(xù)  回復(fù)  更多評(píng)論   

          # re: osgi介紹(二)一個(gè)假想的實(shí)例[未登錄](méi) 2009-10-14 11:38

          @guest
          生動(dòng)易解  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 专栏| 绍兴市| 会同县| 察雅县| 青河县| 广元市| 平邑县| 云霄县| 晋宁县| 手游| 依安县| 泰州市| 平邑县| 金寨县| 巴东县| 翁源县| 江永县| 宾阳县| 宝丰县| 天长市| 嫩江县| 长治市| 博湖县| 年辖:市辖区| 乳山市| 景东| 华容县| 新兴县| 临城县| 习水县| 漳州市| 兴业县| 贡山| 水城县| 吴忠市| 龙井市| 广丰县| 渝北区| 广河县| 阜康市| 临夏县|