Chasing an mobile web vision

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

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

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

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

          我這樣想象:
          小李是一個(gè)軟件工程師,在一家專門為PDA開發(fā)應(yīng)用程序和解決方案的公司工作。最近,
          他剛為公司的一個(gè)客戶開發(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í)供
          用戶查詢修改。用戶使用一個(gè)月后,反饋非常好,但是,他們有新需求了,說原來只是想紀(jì)錄
          信息就成了,現(xiàn)在希望能給出一些排序功能,比如按家庭年收入對(duì)紀(jì)錄進(jìn)行排序.

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

          Class FamilyInfo {

           
          private String familyName;//家庭名稱

           
          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ā)送給客戶,不管客戶如何操作
          總之,原來的PDA程序必須卸載,新程序必須拷貝到PDA上再次執(zhí)行安裝,重新啟動(dòng)運(yùn)行。

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

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

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

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

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

          評(píng)論

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

          非常不錯(cuò),對(duì)于理解OSGI很有幫助,謝謝你!茅塞頓開!
          這個(gè)例子我會(huì)在以后教別人的時(shí)候用的!
          別人問你什么是OSGI的時(shí)候很有說服力,不用干巴巴的說,就是....英文解釋,沒意義!有好的資料能早點(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í)例[未登錄] 2009-10-14 11:38

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 广丰县| 沙坪坝区| 循化| 福安市| 沿河| 曲周县| 屏南县| 霞浦县| 肥乡县| 迭部县| 蒙阴县| 游戏| 措美县| 休宁县| 麦盖提县| 县级市| 舞阳县| 连南| 栾川县| 文化| 淮北市| 理塘县| 宝清县| 蚌埠市| 承德市| 丰县| 西安市| 临安市| 清丰县| 横山县| 砀山县| 广德县| 确山县| 西峡县| 剑阁县| 信阳市| 阿拉善盟| 延寿县| 五大连池市| 青阳县| 晋中市|