<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    基于OSGi實(shí)現(xiàn)服務(wù)框架的分析

    根據(jù)上一篇服務(wù)框架的要素的blog,來(lái)分析下基于OSGi實(shí)現(xiàn)一個(gè)這樣的服務(wù)框架時(shí)需要對(duì)目前的OSGi框架做出哪些方面的修改,以及預(yù)估一下實(shí)現(xiàn)的難度。
    1、如何注冊(cè)服務(wù)
          OSGi服務(wù)采用的是xml+pojo的方式,應(yīng)該說(shuō)還是符合要求的,但如果要把這個(gè)服務(wù)注冊(cè)到一個(gè)服務(wù)中心的話,目前是不支持的,但這個(gè)對(duì)于分布式部署服務(wù)的需求而言,是必須實(shí)現(xiàn)的了。 
          要實(shí)現(xiàn)注冊(cè)服務(wù)至遠(yuǎn)程的服務(wù)中心,這個(gè)可以通過(guò)編寫一個(gè)監(jiān)聽(tīng)服務(wù)生命周期變化的對(duì)象來(lái)實(shí)現(xiàn),當(dāng)監(jiān)聽(tīng)到服務(wù)的生命周期發(fā)生變化時(shí),發(fā)送消息至遠(yuǎn)端的服務(wù)中心,這里也就需要做出一個(gè)服務(wù)中心和各OSGi應(yīng)用與服務(wù)中心遠(yuǎn)程通訊的機(jī)制(消息機(jī)制、RPC機(jī)制、Webservice機(jī)制等等)。
    2、如何調(diào)用服務(wù)
          調(diào)用服務(wù)涉及的點(diǎn)比較的多,來(lái)看看基于OSGi如何來(lái)實(shí)現(xiàn)所有的需求:
          injection方式和顯示調(diào)用方式
          OSGi支持injection方式的調(diào)用服務(wù),在顯示調(diào)用方式方面,OSGi不支持在OSGi框架范圍外的顯示調(diào)用,這個(gè)是有一定的不足的,因?yàn)檫@樣會(huì)導(dǎo)致和第三方框架集成的復(fù)雜,不過(guò)由于目前有了Spring-OSGi,所以呢,可以選用Spring-OSGi,這樣就兩種方式都支持了,如果不想使用Spring-OSGi的話,那么可以選擇查看OSGi框架的代碼,找出顯示調(diào)用的實(shí)現(xiàn)方法。
          另外一個(gè)就是可以通過(guò)服務(wù)中心來(lái)實(shí)現(xiàn)顯示的服務(wù)調(diào)用和injection方式。
          本地調(diào)用和遠(yuǎn)程調(diào)用的區(qū)別
          OSGi并不支持遠(yuǎn)程服務(wù)的調(diào)用,在《OSGi進(jìn)階》Opendoc中我曾經(jīng)寫過(guò)基于webservice調(diào)用的方式,但這個(gè)對(duì)于高性能的分布式調(diào)用時(shí)其實(shí)是不可用的,要屏蔽本地調(diào)用和遠(yuǎn)程調(diào)用的區(qū)別,就得在現(xiàn)有的DS模型的基礎(chǔ)上做改進(jìn)了,需要支持引用服務(wù)時(shí)從當(dāng)前的OSGi環(huán)境中或從服務(wù)中心中注冊(cè)了,這個(gè)需要對(duì)現(xiàn)有的OSGi框架的DS實(shí)現(xiàn)做出改進(jìn),才能做到屏蔽本地調(diào)用和遠(yuǎn)程調(diào)用的區(qū)別,就可以僅僅通過(guò)在xml中做動(dòng)作就可以了。
           同步調(diào)用和異步調(diào)用
           這個(gè)不用說(shuō),目前OSGi自然也是不支持的,只能是對(duì)DS的實(shí)現(xiàn)進(jìn)行改進(jìn)了,增加服務(wù)的同步調(diào)用和異步調(diào)用的支持,同步調(diào)用的話就沒(méi)什么改動(dòng)的了,異步調(diào)用的話就得對(duì)ds做比較大的改動(dòng)了,注入引用的服務(wù)時(shí)注入的不能像目前的ds實(shí)現(xiàn)一樣直接注入服務(wù)實(shí)例對(duì)象了,而是只能注冊(cè)一個(gè)proxy對(duì)象了。
           lazy式的調(diào)用和固定的引用調(diào)用
           lazy式的調(diào)用目前OSGi并不支持,只能是自己對(duì)DS進(jìn)行改動(dòng)了,在引用遠(yuǎn)程服務(wù)和異步調(diào)用時(shí),lazy調(diào)用是非常重要的。
          至于查找服務(wù)方面,這個(gè)OSGi目前的模型就可以了,只是要增加查找服務(wù)中心服務(wù)的功能,這個(gè)在修改DS實(shí)現(xiàn)調(diào)用遠(yuǎn)程OSGi服務(wù)時(shí)會(huì)去實(shí)現(xiàn)。   
          在服務(wù)的安全性等方面這個(gè)也只能基于DS擴(kuò)展實(shí)現(xiàn)了。
    3、如何測(cè)試服務(wù)
          由于OSGi的服務(wù)是POJO的方式,在服務(wù)的測(cè)試方面是完全不會(huì)有問(wèn)題的。
    4、服務(wù)的生命周期
          在服務(wù)的生命周期方面,我想OSGi服務(wù)目前的機(jī)制就是不錯(cuò)的,即如果當(dāng)前這個(gè)服務(wù)組件是對(duì)外暴露服務(wù)的,那么只有當(dāng)其被引用且其本身所引用的服務(wù)可用時(shí)才被激活,如組件沒(méi)有對(duì)外暴露服務(wù),那么只需其引用的服務(wù)可用就可激活了,至于服務(wù)的卸載就是在上面條件不符合的情況下就應(yīng)該卸載了。
          如果有必要的話,可以把服務(wù)的狀態(tài)區(qū)分出installed、active、deactive。
          另外一個(gè)值得注意的問(wèn)題就是,OSGi的DS是當(dāng)服務(wù)的生命周期發(fā)生變化時(shí),會(huì)通過(guò)bind-method和unbind-method去通知引用服務(wù)的組件的,這個(gè)特性我想即使是對(duì)于lazy式的調(diào)用也應(yīng)該保持,這里也就需要DS關(guān)于服務(wù)通知的部分實(shí)現(xiàn)的代碼了。
          來(lái)看看在這種服務(wù)框架的需求下的服務(wù)的生命周期的處理情況:
          安裝服務(wù):
          
          服務(wù)被激活:
          
          服務(wù)被鈍化:
          
          服務(wù)被卸載:      
         
    5、服務(wù)的管理和維護(hù)
          在服務(wù)的管理和維護(hù)上,應(yīng)該說(shuō)目前OSGi的DS模型提供的已經(jīng)是很完整了,不過(guò)在服務(wù)中心點(diǎn)的服務(wù)的管理上則需自己實(shí)現(xiàn)了,基本可以參照OSGi的實(shí)現(xiàn),需要考慮和增加的仍然是服務(wù)中心和各遠(yuǎn)程的OSGi應(yīng)用的通訊。
    6、服務(wù)的組裝
          服務(wù)的組裝方面,這個(gè)OSGi也是完全沒(méi)有支持的,這個(gè)可以考慮基于服務(wù)中心去實(shí)現(xiàn),抑或完全可以單獨(dú)實(shí)現(xiàn),只需可組裝遠(yuǎn)程的服務(wù)中心中的服務(wù)即可了。
    7、服務(wù)的出錯(cuò)處理
          服務(wù)的出錯(cuò)處理,這個(gè)對(duì)于OSGi來(lái)說(shuō)還是有點(diǎn)的麻煩的,就像erlang強(qiáng)調(diào)的一點(diǎn)一樣,不是進(jìn)程隔離方式,自然很難保證當(dāng)在同一VM中的一個(gè)OSGi服務(wù)出錯(cuò)時(shí)不影響到整個(gè)VM。
          只能盡量的去考慮另外一種方式了,當(dāng)服務(wù)處理出錯(cuò)時(shí)的廣播了,這樣可以做到fail-fast。
    8、服務(wù)事件的廣播和訂閱
          服務(wù)事件的廣播和訂閱,這方面OSGi目前支持的還是挺好的,不過(guò)在增加服務(wù)中心后,就需要增加事件廣播至多個(gè)服務(wù)中心了。
     
    在增加考量的兩個(gè)因素方面,OSGi的DS是不支持aop方式的,不過(guò)要搭建一個(gè)服務(wù)庫(kù)不是一件什么難事,其實(shí)服務(wù)中心本身就已經(jīng)是服務(wù)庫(kù)了。
    上面的實(shí)現(xiàn)分析還是有點(diǎn)的虎頭蛇尾吧,最后就按照上面的分析總結(jié)成一張圖吧,來(lái)管窺下基于OSGi實(shí)現(xiàn)的分布式服務(wù)框架會(huì)是個(gè)什么樣的結(jié)構(gòu):

    從上圖并結(jié)合服務(wù)的生命周期管理的部分可以看出要基于OSGi實(shí)現(xiàn)一個(gè)這種適合分布式場(chǎng)景的服務(wù)框架還是比較麻煩的,需要重寫的部分是非常的多,以此來(lái)看的話,目前OSGi最適合的場(chǎng)景應(yīng)該還是如下幾種:
    1、不需要分布式部署的應(yīng)用場(chǎng)景;
    2、需要分布式部署,但僅僅是分層的分布式部署,例如業(yè)務(wù)層在一臺(tái)機(jī)器上,數(shù)據(jù)層在另外的機(jī)器上。
    不過(guò)基于OSGi實(shí)現(xiàn)一個(gè)這樣的服務(wù)框架也是一件很不錯(cuò)的事,估計(jì)這也是EEG目前正在做的事,希望以后能在自己有空的時(shí)候動(dòng)手做做這個(gè)基于OSGi的服務(wù)框架。

    posted on 2008-01-09 23:23 BlueDavy 閱讀(4484) 評(píng)論(3)  編輯  收藏 所屬分類: OSGi、SOA、SCA

    評(píng)論

    # re: 基于OSGi實(shí)現(xiàn)服務(wù)框架的分析[未登錄](méi) 2008-01-13 18:20 guitarpoet

    新的SCA(目前已經(jīng)是OASIS的規(guī)范了)標(biāo)準(zhǔn)的實(shí)現(xiàn)應(yīng)該就是基于OSGi的吧?

    好久沒(méi)有看這個(gè)方面,都有點(diǎn)兒生疏了。呵呵。  回復(fù)  更多評(píng)論   

    # re: 基于OSGi實(shí)現(xiàn)服務(wù)框架的分析 2008-01-13 23:24 BlueDavy

    @guitarpoet
    還沒(méi)有明確的把OSGi列入實(shí)現(xiàn)的規(guī)范,因?yàn)槟壳癝CA規(guī)范基本還就是一個(gè)介紹如何用的規(guī)范,至于怎么實(shí)現(xiàn)沒(méi)有規(guī)范,所以...,不過(guò)OSGi應(yīng)該會(huì)列為RI級(jí)別的東西。  回復(fù)  更多評(píng)論   

    # re: 基于OSGi實(shí)現(xiàn)服務(wù)框架的分析 2015-06-08 20:08 xMan

    http://osgi.jxtech.net 是一個(gè)基于OSGi的企業(yè)級(jí)快速開(kāi)發(fā)平臺(tái),對(duì)于信息管理系統(tǒng)來(lái)說(shuō),開(kāi)發(fā)相當(dāng)容易、快速,還能自適應(yīng)移動(dòng)端呢。  回復(fù)  更多評(píng)論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導(dǎo)航

    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 西西人体大胆免费视频| 国产V亚洲V天堂无码久久久 | 日韩亚洲不卡在线视频中文字幕在线观看| 久久精品国产亚洲AV果冻传媒| 亚洲精品乱码久久久久久久久久久久| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 精品在线视频免费| 激情婷婷成人亚洲综合| WWW亚洲色大成网络.COM| 亚洲AV无码一区二区三区久久精品 | 日本免费一区二区三区| 最近2019免费中文字幕视频三| 久久爰www免费人成| 久久精品人成免费| 手机看黄av免费网址| 无码一区二区三区免费视频| 午夜老司机免费视频| 四虎永久成人免费影院域名| 亚洲男人在线无码视频| 亚洲精品国产成人片| 亚洲综合一区二区精品导航| 亚洲妓女综合网99| 亚洲人成色777777老人头| 美女免费精品高清毛片在线视| 亚洲精品视频免费| 日韩电影免费在线观看中文字幕| 99久热只有精品视频免费观看17| 色片在线免费观看| 日日操夜夜操免费视频| 久久久久无码专区亚洲av| 亚洲av无码一区二区三区网站 | 亚洲国产精品福利片在线观看| 久久久国产精品亚洲一区| 亚洲午夜在线播放| 特级毛片A级毛片免费播放| 中文字幕免费在线视频| 最近中文字幕mv免费高清在线 | 日本免费网站视频www区| 日韩高清在线免费看| 亚洲伊人久久精品影院| 亚洲小说图片视频|