服務(wù)框架的要素

          服務(wù)框架,這個(gè)名詞已經(jīng)出現(xiàn)了很多年了,很早以前系統(tǒng)的架構(gòu)就希望是以基于服務(wù)框架的方式來(lái)搭建的,turbine、phoenix、avalon等都是朝著實(shí)現(xiàn)服務(wù)框架的目標(biāo)而去,如今的SCA,也可以說(shuō)就是為了提供一個(gè)可用的服務(wù)框架,服務(wù)框架在系統(tǒng)中到底承擔(dān)什么角色呢,為什么它會(huì)顯得那么重要呢,如果要實(shí)現(xiàn)一個(gè)服務(wù)框架,不太可能從最底層做起,那么我們又需要怎么樣去選擇呢?
          服務(wù)本身是個(gè)挺形象的名詞,在系統(tǒng)設(shè)計(jì)中我們非常強(qiáng)調(diào)輸入和輸出,服務(wù)呢,可以說(shuō)是更形象的去強(qiáng)調(diào)了這一點(diǎn),每個(gè)模塊都會(huì)對(duì)外提供一定的功能,而這些對(duì)外提供的功能我們就可以作為服務(wù)了,細(xì)到模塊內(nèi),我們也會(huì)發(fā)現(xiàn)模塊內(nèi)各個(gè)類其實(shí)也是以服務(wù)的方式來(lái)交互的,在這樣的情況下,服務(wù)框架自然就成了整個(gè)系統(tǒng)的核心基礎(chǔ)框架,那么服務(wù)框架能幫我們來(lái)提供哪些功能呢,如果我們要實(shí)現(xiàn)一個(gè)服務(wù)框架,有哪些要素是需要考慮的呢,歡迎大家拍磚,多多交流!
          1、如何注冊(cè)服務(wù)
                怎么樣注冊(cè)出服務(wù)這東西呢,:),這是我們?cè)谧隹荚u(píng)時(shí)的第一要素了,最理想的莫過(guò)于通過(guò)xml將一個(gè)pojo描述為服務(wù)了,或者是java annotation的方式了。
                另外個(gè)可以附加考評(píng)的點(diǎn)就是在注冊(cè)服務(wù)時(shí)是否支持部署到指定的服務(wù)中心,類似websphere的遠(yuǎn)程部署。
          2、如何調(diào)用服務(wù)
                如何調(diào)用服務(wù),這個(gè)可以說(shuō)是考評(píng)中很重要的一個(gè)因素,而且也是比較復(fù)雜的考評(píng)點(diǎn)。
                從調(diào)用的方式上來(lái)講,服務(wù)的調(diào)用需要考評(píng)的有是否支持injection方式和顯式調(diào)用方式、本地調(diào)用和遠(yuǎn)程調(diào)用的區(qū)別、同步調(diào)用和異步調(diào)用的區(qū)別、lazy式的調(diào)用還是固定的引用調(diào)用,從考評(píng)的期望上來(lái)講,我們當(dāng)然是希望injection和顯式調(diào)用都支持,本地調(diào)用和遠(yuǎn)程調(diào)用、同步調(diào)用和異步調(diào)用能透明式的配置,lazy式的調(diào)用是指注入或調(diào)用的服務(wù)只有在切實(shí)調(diào)用到相應(yīng)的方法時(shí)才會(huì)獲取到真實(shí)的服務(wù)對(duì)象,而固定的引用調(diào)用時(shí)指當(dāng)調(diào)用服務(wù)時(shí)即獲取到真實(shí)的服務(wù)實(shí)例對(duì)象,lazy式的調(diào)用和固定引用調(diào)用的支持對(duì)于集群應(yīng)用場(chǎng)景會(huì)產(chǎn)生很大的影響。
                調(diào)用服務(wù)同時(shí)涵蓋了查找服務(wù)的概念,在查找服務(wù)方面考評(píng)的點(diǎn)就是是否支持按需查找服務(wù)、查找多個(gè)服務(wù),由于同樣的服務(wù)在系統(tǒng)中可能存在多個(gè)不同的實(shí)現(xiàn),按需查找服務(wù)的意義就在于可以準(zhǔn)確的指定所需的服務(wù),這對(duì)于需要按規(guī)則準(zhǔn)確查找服務(wù)的應(yīng)用場(chǎng)景而言是很重要的;查找多個(gè)(0..n)服務(wù)呢,對(duì)于需要調(diào)用可用的所有服務(wù)的應(yīng)用場(chǎng)景很重要,這個(gè)功能對(duì)于當(dāng)調(diào)用的服務(wù)不是必須的時(shí)候也是非常重要的,例如引用了日志服務(wù),但即使當(dāng)日志服務(wù)不可用的時(shí)候也需要不影響當(dāng)前類的功能的應(yīng)用場(chǎng)景。
                在調(diào)用服務(wù)上還需要考慮調(diào)用服務(wù)的安全性,例如認(rèn)證、權(quán)限控制等。
                在調(diào)用服務(wù)上還需考慮此框架中的服務(wù)是否可以很容易的被第三方進(jìn)行調(diào)用,例如在spring中調(diào)用、在其他的語(yǔ)言中調(diào)用等,呵呵,是不是有點(diǎn)SCA的感覺。
          3、如何測(cè)試服務(wù)
                服務(wù)的測(cè)試無(wú)疑也是考評(píng)的重要點(diǎn)之一,要知道當(dāng)年webwork能在MVC框架領(lǐng)域爭(zhēng)得一席地位和其action更好的支持了單元測(cè)試有很大的關(guān)系,所以服務(wù)框架在此方面支持的怎么樣也是需要考評(píng)的要素之一。
          4、服務(wù)的生命周期
                由于服務(wù)的生命周期是由服務(wù)框架來(lái)控制的,因此服務(wù)的生命周期是如何轉(zhuǎn)換的這也是我們?cè)诳疾旆?wù)框架時(shí)需要知道的。
                另外一個(gè)考評(píng)點(diǎn)就是如果服務(wù)的生命周期發(fā)生轉(zhuǎn)變時(shí),引用此服務(wù)的類是否能得到通知等,當(dāng)然,如果是lazy式的調(diào)用的話,完全不存在這問(wèn)題。
          5、服務(wù)的管理和維護(hù)
                這個(gè)對(duì)于服務(wù)框架而言應(yīng)該是比較基礎(chǔ)的功能,包括的有提供服務(wù)列表,在服務(wù)列表中應(yīng)該有服務(wù)的名稱、所屬的服務(wù)中心、服務(wù)的狀態(tài)、服務(wù)的處理日志以及服務(wù)訪問(wèn)的壓力記錄等等。
                服務(wù)的管理就包括了服務(wù)的安裝、升級(jí)、啟動(dòng)、停止和卸載。
          6、服務(wù)的組裝
                服務(wù)的組裝的概念是指可以靈活的將多個(gè)服務(wù)組裝為一條鏈,然后鏈?zhǔn)降恼{(diào)用,這個(gè)呢是附加的考評(píng)要素了。
          7、服務(wù)的出錯(cuò)處理
                需考評(píng)當(dāng)位于此服務(wù)框架下的服務(wù)處理出錯(cuò)時(shí)會(huì)造成什么現(xiàn)象,最理想的結(jié)果自然是服務(wù)的調(diào)用停止,并記錄相關(guān)的日志,另外的服務(wù)對(duì)此情況做出糾錯(cuò)處理,有點(diǎn)像erlang的容錯(cuò)思想,:),最基本的一點(diǎn)就是不能影響到服務(wù)框架和其他服務(wù)的正常運(yùn)轉(zhuǎn)。
          8、服務(wù)事件的廣播和訂閱
                允許服務(wù)在處理時(shí)能對(duì)外廣播事件,同時(shí)也可訂閱事件,以觸發(fā)某些動(dòng)作,這里可以附加考評(píng)的就是是否支持多種靈活的服務(wù)觸發(fā)方式,例如定時(shí)的觸發(fā)等。
          其他可考評(píng)的要素還有服務(wù)框架對(duì)于AOP的支持、是否可建立服務(wù)庫(kù),就像bundle repository一樣,:)

          當(dāng)然,目前開源界應(yīng)該說(shuō)是沒有此類框架的直接存在的,但我們可以基于Equinox、Newton等已存在的類似框架來(lái)實(shí)現(xiàn)一個(gè)這樣的標(biāo)準(zhǔn)的服務(wù)框架,考評(píng)時(shí)就可以根據(jù)這些點(diǎn)去判斷基于哪個(gè)已有的框架是較好的選擇了。

          posted on 2008-01-02 17:25 BlueDavy 閱讀(11062) 評(píng)論(4)  編輯  收藏 所屬分類: OSGi、SOA、SCA

          評(píng)論

          # re: 服務(wù)框架的要素 2008-01-02 18:08 布衣郎

          說(shuō)的挺詳細(xì)的,關(guān)注中  回復(fù)  更多評(píng)論   

          # re: 服務(wù)框架的要素 2008-01-03 09:54 zhoufu24

          詳盡,全面的分析!  回復(fù)  更多評(píng)論   

          # re: 服務(wù)框架的要素 2009-08-28 11:04 常高偉

          講的比較詳細(xì),看了之后很有收獲。
          關(guān)于開發(fā)框架,我有一些個(gè)人的看法,不知到怎么樣。
          對(duì)于軟件開發(fā),我經(jīng)常會(huì)和印刷術(shù)進(jìn)行類比,從印刷術(shù)的發(fā)展中,也許可以得到對(duì)軟件開發(fā)的一些有價(jià)值的思路。
          印刷從剛開始的手抄,后來(lái)技術(shù)進(jìn)步了,到石碑印刷,雕版印刷,提高復(fù)用性。在到后來(lái)的活字印刷術(shù),再到現(xiàn)代的更先進(jìn)的印刷術(shù)(不知道怎么稱呼了)。
          軟件開發(fā)技術(shù)的發(fā)展歷程和印刷術(shù)的發(fā)展歷程是非常相像的。我認(rèn)為,我們現(xiàn)在處理“活字印刷術(shù)”記得,代表性的技術(shù)比如有:SCA,OSGI等。我把活字理解為我們現(xiàn)在討論的組件,或者服務(wù)。開發(fā)框架對(duì)應(yīng)以前把一個(gè)個(gè)活字組織起來(lái)的框。  回復(fù)  更多評(píng)論   

          # re: 服務(wù)框架的要素 2009-08-28 11:26 常高偉

          基于這種思路向下考慮,我認(rèn)為,軟件開發(fā)應(yīng)該在服務(wù)(組件)標(biāo)準(zhǔn)化方面努力。即可以在某個(gè)特定的領(lǐng)域,定義標(biāo)準(zhǔn)的基礎(chǔ)服務(wù),對(duì)服務(wù)進(jìn)行編碼。開發(fā)模式采用“服務(wù)框架+標(biāo)準(zhǔn)服務(wù)組件+現(xiàn)實(shí)世界的模型描述”的方式。
          上述方式對(duì)應(yīng)于現(xiàn)在的印刷術(shù),人類使用的語(yǔ)言,應(yīng)該對(duì)應(yīng)于服務(wù),word等文本編輯工具是對(duì)現(xiàn)實(shí)進(jìn)行建模的工具,最終的word文檔就是現(xiàn)實(shí)的模型,把這個(gè)模型發(fā)送給打印機(jī),打印機(jī)根據(jù)模型生成可以打印的系統(tǒ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)論排行榜

          主站蜘蛛池模板: 瑞金市| 勃利县| 龙海市| 个旧市| 永州市| 宜丰县| 合水县| 故城县| 巩义市| 六枝特区| 宣恩县| 龙山县| 澜沧| 股票| 大化| 泾源县| 思茅市| 安顺市| 怀化市| 聂荣县| 巴南区| 陆良县| 青州市| 东光县| 固阳县| 台中市| 宾阳县| 深州市| 东平县| 维西| 海门市| 罗定市| 灵台县| 交口县| 那坡县| 喜德县| 赫章县| 伽师县| 隆尧县| 商都县| 汽车|