月蝕傳說

          浮躁讓人失去理智
          posts - 25, comments - 101, trackbacks - 0, articles - 0
            BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

          淺談SCA

          Posted on 2006-10-06 04:24 Dart 閱讀(3025) 評論(10)  編輯  收藏 所屬分類: SCA

          SCA 是由幾家國內(nèi)外知名企業(yè)聯(lián)合制定的,他們成立了一個名為OSOA的組織,SCA 標(biāo)準(zhǔn)目前還在完善階段,它于 2005 11 月發(fā)布了 0.9 版本,目前版本已經(jīng)到了 0.96 。在 0.9 版本中, SCA 標(biāo)準(zhǔn)就提出了 Java 實(shí)現(xiàn)以及 C++ 實(shí)現(xiàn)標(biāo)準(zhǔn),而且在以后的版本中,會陸續(xù)加入其他的實(shí)現(xiàn)標(biāo)準(zhǔn),也就是說 SCA 并不是只針對某一種語言的,不同語言或者環(huán)境之間通過開放的,標(biāo)準(zhǔn)的技術(shù)來實(shí)現(xiàn)互操作,比如我們常見的WebService等


          SCA
          提出的這套基于 SOA 去構(gòu)建企業(yè)應(yīng)用的編程模型,它的基礎(chǔ)思想就將業(yè)務(wù)功能構(gòu)造成一系列的服務(wù),并且能夠很好地將這些服務(wù)組合起來,達(dá)到解決業(yè)務(wù)需求的目的。在構(gòu)建這些應(yīng)用時所用到的服務(wù),不僅包含新建服務(wù),而且可以包括已有的業(yè)務(wù)應(yīng)用中的業(yè)務(wù)功能,也就是說, SCA 提供了一套針對服務(wù)組合和服務(wù)創(chuàng)建的模型。

          目前來看,雖然有很多標(biāo)榜自己是基于 SOA 的產(chǎn)品或者框架,但是大部分還是各自為戰(zhàn),而 SCA 的出現(xiàn)有望統(tǒng)一基于 SOA 思想的框架。 Apache 已經(jīng)在最近完成了 SCA 標(biāo)準(zhǔn)的實(shí)現(xiàn),各位可以去 Apache 的網(wǎng)站看看。國內(nèi)的一家 Framework 廠商普元也加入到了 OSOA ,并且也宣布會在 2007 年發(fā)布一套 SCA 框架的 Framework

          ?

          SCA 具體的應(yīng)用目前還不太清楚,不過 IBM 的新版本 Websphere 實(shí)現(xiàn)了 SCA 0.9 標(biāo)準(zhǔn),估計(jì)慢慢地會讓 SCA 得到更廣泛的應(yīng)用。在這片文章里我想簡單談?wù)?/span> SCA 中的一些重要概念: Module,Component,ComponentType,Entry Point,External Service

          ?

          Module

          Module SCA 構(gòu)架中重要的組成單元,也是粒度較粗的一個單元。 Module SCA 0.9 以后版本改成了 Composite ,這可能是 OSOA 組織為了更加明確化其含義而進(jìn)行的一些命名更改。在 SCA 0.96 版本中, Module 具有了屬性,這是為了能夠更加方便地注入給 Component 屬性值而做的調(diào)整。總之在 SCA 0.9 以及后續(xù)版本中做了一些改進(jìn),但是大體的框架沒有發(fā)生變化,如圖所表示:


          module_over.JPG



          它包括了

          Component,Entry Point,External Service Wire 等元素,而這些元素互相之間有一定的關(guān)聯(lián),上圖中沒有畫出 Wire ,因?yàn)?/span> Wire 是專門針對 Service Reference 連接 Component 以及 Entry Point 連接到 Component 的描述,在上圖中我已經(jīng)畫出了這幾種元素之間的關(guān)系和連接,所以也就沒有必要專門指出 Wire ,如果需要獲得更多詳細(xì)的信息,可以去 DW 或者 Dev2Dev 查看 SCA 規(guī)范。


          描述
          Module 是通過一個 XML 格式文件進(jìn)行描述的,下面是該 XML 文件的一個大體格式:


          <? xml?version="1.0"?encoding="ASCII" ?>

          < module? xmlns =”http://www.osoa.org/xmlns/sca/0.9”

          xmlns:v ="http://www.osoa.org/xmlns/sca/values/0.9"

          name
          ="xs:NCName" ? >

          < entryPoint? name ="xs:NCName" ?multiplicity ="0..1?or?1..1?or?0..n?or?1..n" ? > *

          < interface .interface-type />

          < binding .binding-type?uri ="xs:anyURI" /> +

          < reference > wire-target-URI </ reference >

          </ entryPoint >

          < component? name ="xs:NCName" > *

          < implementation .implementation-type />

          < properties > ?

          < v:property-name > property-value </ v:property-name > +

          </ properties >

          < references > ?

          < v:reference-name > wire-target-URI </ v:reference-name > +

          </ references >

          </ component >

          < externalService? name ="xs:NCName" > *

          < interface .interface-type /> +

          < binding .binding-type?uri ="xs:anyURI" /> *

          </ externalService >

          < wire > *

          < source .uri > wire-source-URI </ source.uri >

          < target .uri > wire-target-URI </ target.uri >

          </ wire >

          </ module >

          ?

          ComponentType Component


          對于一個
          Module 內(nèi)部來說, Component 是絕對的主力。


          要說起
          Component ComponentType 就不得不說。


          ComponentType
          是一個描述 SCA 中服務(wù)的元素,它定義了服務(wù)以及服務(wù)的接口,以及服務(wù)對應(yīng)的屬性和服務(wù)引用。 ComponentType 是通過一個后綴名為 .componentType XML 文檔來描述的,描述如下:


          < componentType? xmlns ="http://www.osoa.org/xmlns/sca/0.9" >

          < service? name ="MyValueService" >

          < interface .java?interface ="services.myvalue.MyValueService" />

          </ service >

          < reference? name ="customerService" >

          < interface .java?interface ="services.customer.CustomerService" />

          </ reference >

          < reference? name ="stockQuoteService" >

          < interface .java?interface ="services.stockquote.StockQuoteService" />

          </ reference >

          < property? name ="currency" ?type ="xsd:string" ?default ="USD" />

          </ componentType >

          ?

          服務(wù)的接口目前分為兩種: Java interface WSDL ,這很好理解, Java interface 就不說了, WSDL 想必大家也都知道,通過它的描述我們可以得到一個很準(zhǔn)確的接口。服務(wù)接口是一個可以擴(kuò)展的屬性,我們可以定義出其他不同的接口類型,當(dāng)然,前提是所使用的 SCA 必須能識別并支持才行。


          服務(wù)的屬性和服務(wù)引用和
          Spring 的屬性以及引用類似。 ComponentType 描述的這些屬性和引用,在 SCA Runtime 中實(shí)例化服務(wù)時,是需要注入的。屬性一般對應(yīng)的是一些簡單類型,復(fù)雜類型只能是 SDO JAXB ;而引用則是需要對應(yīng)的也是一個服務(wù),在實(shí)例服務(wù)的時候,服務(wù)所引用的其他服務(wù)也需要一起實(shí)例化并注入。(注入的前提是該屬性或者引用的 requied 屬性為 true ,否則 SCA 就不會注入)。


          ComponentType
          只是描述性地說明一下服務(wù)的的接口以及屬性,引用,但是具體該服務(wù)對應(yīng)的實(shí)現(xiàn)以及屬性的值和引用對應(yīng)的服務(wù)是沒有給出的。


          Component
          就是完成上述 ComponentType 沒有完成的工作。


          我們可以把
          ComponentType 想象成一個 Class ,而 Component 是這個 Class 的一個 Instance

          Component 描述了服務(wù)對應(yīng)的實(shí)現(xiàn),服務(wù)實(shí)現(xiàn)是通過 implement 元素指定的。這里要注意, SCA 中,實(shí)現(xiàn)是一個比較廣的概念,不僅僅是一個簡單的 Java 類實(shí)現(xiàn), Component 所對應(yīng)的實(shí)現(xiàn)和 ComponentType 中所定義的接口一樣,是有不同類型的。目前來看, SCA 規(guī)范中給 implement 元素定義了只給出了一個 Java 實(shí)現(xiàn): JavaImplement ,在 SCA 的一些其他擴(kuò)展信息中,提出了 BEPL 實(shí)現(xiàn)以及 EJB 實(shí)現(xiàn)等。


          同樣,
          Component 也描述了 ComponentType 中定義的屬性以及引用所對應(yīng)的值。 Component XML 描述是在 Module 的描述文件中的,下面給出一個片段:


          < component? name ="xs:NCName" > *

          < implementation .implementation-type />

          < properties > ?

          < v:property-name? override ="no?or?may?or?must" ?

          modulePropertyName
          ="xs:NCName" ? >

          property-value

          </ v:property-name > +

          </ properties >

          < references > ?

          < v:reference-name > wire-target-URI </ v:reference-name > +

          </ references >

          </ component >

          ?

          對于我們剛才提到的服務(wù)引用,這里我想羅嗦幾句。


          服務(wù)引用并不是一個調(diào)用順序或者調(diào)用關(guān)系的描述,它只是指出了服務(wù)之間的引用關(guān)系,并且能夠動態(tài)注入而已。很多人認(rèn)為,
          SOA 中服務(wù)和服務(wù)之間是可以通過業(yè)務(wù)規(guī)則連接起來,然后可以逐個調(diào)用,像一個 Flow 一樣,其實(shí)不然, SOA 更重要的是關(guān)注服務(wù),比如 SCA 就很重視對服務(wù)的管理,以及將服務(wù)接口和實(shí)現(xiàn)解偶,服務(wù)和服務(wù)之間的連接也只是引用而已,并不是調(diào)用順序。用過 Seebeyond (比較早的一個面向服務(wù)的框架,已經(jīng)被 SUN 收購)的人都知道,真正去啟動服務(wù)編排調(diào)用的還是 BEPL 。同樣 SCA 中之所以提出了 Component BEPL 實(shí)現(xiàn),也是出于對服務(wù)編排調(diào)用的考慮。

          ?

          EntryPoint


          Module
          SCA 中是一個粒度較為粗的單元, Module Module 之間的交互是通過定義在 Module 內(nèi)部的 Entry Point External Service 進(jìn)行的,也就是說 Entry Point 是一個 Module 對外提供的接口,而 External Service 是一個 Module 對外訪問的出口。


          module2module.JPG

          ?

          ?

          Entry Point 自身是只能定義自己的訪問接口,但是真正的具體實(shí)現(xiàn)(比如一個 Java Class ),是通過它自身的 Reference 指定的。 Reference 指向的是一個 Component ,這就意味著,該 Entry Point 的調(diào)用是直接利用 Component 的實(shí)現(xiàn)來完成的。下面是 EntryPoint 的描述片段:


          < entryPoint? name ="MyValueService" >

          < interface .java?interface ="services.myvalue.MyValueService" />

          < binding .ws?port ="http://www.myvalue.org/MyValueService#

          wsdl.endpoint(MyValueService/MyValueServiceSOAP)"
          />

          < reference > MyValueServiceComponent </ reference >

          </ entryPoint >

          ?

          而一個 Entry Point 既然是對外的接口,那么它就不能像我們訪問一個普通 Java 類那么去訪問了,所以在對外發(fā)布 Entry Point 是需要通過其他的一些輔助技術(shù)來完成,比如 Web Service JMS 等,問題在于如何確定該 Entry Point 所對應(yīng)的這些輔助技術(shù)(應(yīng)該說是某種協(xié)議)呢? SCA 規(guī)定,一個 Entry Point 需要指出它的 Binding ,利用 Binding 來確定該 Entry Point 具體是需要通過什么協(xié)議來進(jìn)行發(fā)布的。

          ?

          Binding


          Binding
          是一個可以擴(kuò)展的元素,目前 SCA 0.9 中給出了兩種 Binding: SCA, Web Service ,不過我們是可以對 Binding 進(jìn)行擴(kuò)展的,前提是所使用的 SCA 容器必須支持?jǐn)U展的 Binding


          一旦
          Entry Point 指明了自己的 Binding 后, SCA 容器就應(yīng)該根據(jù)它所指定的 Binding 類型對它進(jìn)行對外發(fā)布。比如 Entry Point A 指定了一個 Web Service Binding ,那 SCA 就必須能將這個服務(wù)通過 Web Service 的實(shí)行發(fā)布出去(不要聯(lián)想到 UDDI ,這里的發(fā)布只是說將這個 Entry Point 制作成一個 Web Service ,能讓外界通過 Web Service 的訪問方式訪問到該 Entry Point )。具體 SCA 如何實(shí)現(xiàn)我們不得而知。

          ?

          廣告


          本人的一個簡單的
          SCA Container 實(shí)現(xiàn),可以在uxbalto.googlepages.com得到 相關(guān)信息,不過頁面沒怎么加,東西少得可憐。
          ?

          External Service


          既然理解了
          Binding ,那理解 External Service 就容易許多了。先看看描述片段:


          < externalService? name ="CustomerService" >

          < interface .java?interface ="services.customer.CustomerService" />

          < binding .sca />

          </ externalService >

          < externalService? name ="StockQuoteService" >

          < interface .java?interface ="services.stockquote.StockQuoteService" />

          < binding .ws?port ="http://www.stockquote.org/StockQuoteService#

          wsdl.endpoint(StockQuoteService/StockQuoteServiceSOAP)"
          />

          </ externalService >

          ?

          External Service Entry Point 類似,只是一個是對外發(fā)布,一個是要去遠(yuǎn)程訪問而已。我們一旦指明了 External Service Binding 后,在訪問該 External Service 提供的服務(wù)時,我們就會通過指定 Binding 類型對遠(yuǎn)程發(fā)布的服務(wù)進(jìn)行訪問。


          其實(shí)不難看出,由于
          SCA Module Module 之間的交互需要通過這么一種遠(yuǎn)程發(fā)布和訪問的方式,可以認(rèn)為 Entry Point External Service 之間是被調(diào)用和調(diào)用的關(guān)系, Entry Point 發(fā)布出去的服務(wù),一般都是由 External Service 訪問的。當(dāng)然, External Service 不一定非要去訪問 SCA 容器中的東西,單獨(dú)的非 SCA 管理的 Web Service 或者其他什么也可以利用 External Service 去訪問的。

          ?

          結(jié)束語


          SCA
          規(guī)范中還有很多沒有在文中提起,比如異步調(diào)用,服務(wù)的 Scope,SubSystem 等,我會在以后的文章中再和大家一起討論。


          評論

          # re: 淺談SCA  回復(fù)  更多評論   

          2006-10-06 11:55 by BlueDavy
          SCA繼承了OSGi的規(guī)范的模塊化的設(shè)計(jì)方法,同時為企業(yè)應(yīng)用而增加了屏蔽諸如遠(yuǎn)程調(diào)用這些的具體的技術(shù)難度的東西,再加上它繼承了SOA的跨語言的特性,使得在企業(yè)應(yīng)用領(lǐng)域它的優(yōu)勢還是很明顯的。
          SCA的規(guī)范的模塊化至少對Java界是會有影響的,也許JCP會加快完善Java Module System的相關(guān)規(guī)范并付諸實(shí)現(xiàn)。

          # re: 淺談SCA  回復(fù)  更多評論   

          2006-10-06 16:13 by pear
          真的不知這些東西是用來解決什么問題的。

          摟主: 能不能給我推薦一個主要用Web Service實(shí)現(xiàn)的實(shí)際系統(tǒng)?

          現(xiàn)在感覺技術(shù)學(xué)了,卻不知用來干什么,有點(diǎn)迷盲。。呵呵

          # re: 淺談SCA  回復(fù)  更多評論   

          2006-10-06 17:31 by BlueDavy
          最重要是用來實(shí)現(xiàn)標(biāo)準(zhǔn)化,子系統(tǒng)由模塊組成,模塊由組件構(gòu)成,組件對外暴露或引用服務(wù),這些本來就是系統(tǒng)設(shè)計(jì)的基本準(zhǔn)則,只是SCA希望將這樣的設(shè)計(jì)方法標(biāo)準(zhǔn)化,同時屏蔽一些技術(shù)難度細(xì)節(jié)的東西,使得開發(fā)人員能夠更加專注于業(yè)務(wù)的實(shí)現(xiàn).....just so so..

          # re: 淺談SCA  回復(fù)  更多評論   

          2006-10-07 11:54 by Dart
          TO pear:

          關(guān)于“主要用Web Service實(shí)現(xiàn)的實(shí)際系統(tǒng)”我不太明白是什么意思,我猜你是想知道WS主要應(yīng)用吧?如果是那樣我認(rèn)為你可以好好看看Developworks上的文章,對你有幫助

          另外,我的這篇文章還是寫得太虛,沒有給大家比較直觀的認(rèn)識。等我完成了我的SCA容器(Balto)后一定會將官方的BigBank完成,展示一下SCA的戰(zhàn)斗力。

          技術(shù)不是游戲,技術(shù)不是拿來玩的,技術(shù)的存在一定是要解決當(dāng)前的存在的生產(chǎn)生活問題的。千萬不要認(rèn)為技術(shù)學(xué)了沒用,學(xué)了就一定有用;但是也不要盲目追捧技術(shù)

          TO BlueDavy:

          SCA目前還不完善,很難說以后會是什么樣,而且它存在的目的其實(shí)很明確:在現(xiàn)在天天呼喚SOA的這樣一個歷史時期中,幾個大廠商推標(biāo)準(zhǔn),然后其他公司追趕,最后設(shè)計(jì)成,為以這幾家大公司現(xiàn)有產(chǎn)品整合為主的框架也說不定。

          SCA是否真能到達(dá)“設(shè)計(jì)開發(fā)SOA化”這就很難說了,這需要設(shè)計(jì)開發(fā)人員自身對SOA的理解,不過讓SCA達(dá)到"設(shè)計(jì)標(biāo)準(zhǔn)化"還是容易的。

          我對OSGi不熟悉,不過由于長期從事Eclipse Plugins開發(fā),多少知道一些。我覺得OSGi中那中“既插既拔”的module管理思路和SCA中的以Module為主要單元的設(shè)計(jì)還不太一樣,OSGi更偏重于對接入模塊的動態(tài)管理,并不整合它們;SCA則是更加偏重對Module(Composite)之間的交互。

          有不對的地方還請多多指教

          # re: 淺談SCA  回復(fù)  更多評論   

          2006-10-08 09:59 by BlueDavy
          @Dart
          為什么我會說SCA是OSGi在企業(yè)應(yīng)用的一種延伸,原因就在于SCA和OSGi都有一個非常核心的東西,就是將模塊設(shè)計(jì)、開發(fā)、部署標(biāo)準(zhǔn)化,在這方面SCA和OSGi其實(shí)基本是一致的,所以在Module之間的交互上,兩者的原理也是相同的,都是一種服務(wù)交互的機(jī)制,只是表現(xiàn)上SCA有所不同,因?yàn)镾CA的制定目標(biāo)是企業(yè)應(yīng)用,所以它考慮到了遠(yuǎn)程模塊交互上的問題,這個強(qiáng)于OSGi,所以我覺得SCA很像是OSGi在企業(yè)應(yīng)用界的延伸。
          非常有興趣和你多交流,我的MSN:
          BlueDavy@hotmail.com

          # re: 淺談SCA  回復(fù)  更多評論   

          2007-09-02 20:56 by jackyrong
          由于本人公司里存在不少遺留系統(tǒng),有用java,php,asp,asp.net的四類系統(tǒng),而且還有不少和合作伙伴的接口程序(之前都是用HTTP來交換數(shù)據(jù)的),現(xiàn)在而且本人的碩士畢業(yè)
          論文設(shè)計(jì)也是做SOA方面的,但目前遇到了一個難題,那就是到底SOA應(yīng)該如何從開始進(jìn)行架構(gòu)設(shè)計(jì),如何提煉業(yè)務(wù),并且如何將SOA的思想應(yīng)用到公司的實(shí)際系統(tǒng)中,我目前只整理了一下,感覺可以用到SCA/SDO/BPEL/ESB這些東西,ESB打算用MULE的開源,
          SCA/SDO打算用APACHE的TUSCANY,但不知道有什么好的架構(gòu)設(shè)計(jì)的方法呢?

          # re: 淺談SCA  回復(fù)  更多評論   

          2007-09-03 15:14 by Dart
          to jackyrong:

          從什么角度入手去開發(fā)一個SOA構(gòu)架的應(yīng)用的確是個難題。
          我記得IBM的一次SOA會議上提到過,其實(shí)做SOA的可以從多個方面入手,一共有好幾個方面,我只記得以下2點(diǎn):
          1.從數(shù)據(jù)入手

          基本上就是有點(diǎn)像數(shù)據(jù)整合的感覺——將異構(gòu)應(yīng)用的數(shù)據(jù)進(jìn)行整合同步。目前國
          內(nèi)有不少公司做這樣的產(chǎn)品,比如東方通的TI在數(shù)據(jù)同步方面就很強(qiáng)。

          2.從連接入手
          將一些應(yīng)用的接口進(jìn)行抽取,然后利用SCA的標(biāo)準(zhǔn)進(jìn)行封裝(或者直接利用WebServices進(jìn)行封裝),對外發(fā)布后提供給其他應(yīng)用調(diào)用。

          還有就是你所提到使用ESB,這點(diǎn)上我覺得其實(shí)如果你使用SCA來做的話,ESB是不是可以取消掉呢?

          上面是我一些不成熟的看法,希望對你有所幫助

          # re: 淺談SCA  回復(fù)  更多評論   

          2007-10-30 16:40 by yihong
          我有這么幾個問題想問下您:
          (1)Component是不是不能提供服務(wù),是不是必須通過Composite向外提供服務(wù)?Composite是SCA里面提供服務(wù)的最小單元么,它的上一級是否是Domain,那domain是不是也是一個服務(wù),只是服務(wù)粒度比較大而已?
          (2)Composite可以被發(fā)布為WEB service,那么在SCA里面WEB service處于一個什么樣的地位,它屬于“非SCA組件”么,在SCA規(guī)范里面WEB service能被直接綁定,直接調(diào)用么?
          (3)在SOA架構(gòu)里面,ESB是一個非常重要的概念。SCA作為SOA的一個規(guī)范,ESB是怎么實(shí)現(xiàn)的。我現(xiàn)在所了解的是IBM的WID中可以通過構(gòu)建Mediation module(在SCA 0.9里面好像module對應(yīng)現(xiàn)在的Composite)來提供ESB服務(wù)。
          (4)在SCA里面好像組件能打包,是不是只有Domian才能打包呢?打包有什么作用,Contribution到底是一個什么樣的東西?
          (5)SOA的概念層次從下到上一般分為:操作系統(tǒng)層、組件層、服務(wù)層、業(yè)務(wù)流程層、和表示層(IBM好像就是這么分的)。具體到SCA,它分別對應(yīng)于SCA的什么呢?看過LZ寫的文章,依我理解是不是“組件層”對應(yīng)Component,“服務(wù)層”對應(yīng)Composite,“業(yè)務(wù)流程”對應(yīng)Domain呢?
          (6)LZ的文章把Composite分為三層,是不是TOP-Composite對應(yīng)業(yè)務(wù)流程?TOP-Composite與Domain就服務(wù)粒度上有什么不同呢?
          (7)這個問題還是關(guān)于WEB service的,現(xiàn)在很多文章,還有基本所有的工具包括IBM,在實(shí)現(xiàn)SOA的時候基本都是用WEB service。雖然IBM聲稱它的產(chǎn)品支持SCA1.0,但是在實(shí)現(xiàn)的時候都需要把服務(wù)發(fā)布為WEB service。既然SOA可以用WEB service來實(shí)現(xiàn),而SCA又是SOA的一個實(shí)現(xiàn)規(guī)范,那么SCA和WEB service的關(guān)系是什么樣的?
          (8)我經(jīng)常看到好多文章題目是“基于SOA的、、、、實(shí)現(xiàn)”,還有的是“基于SCA的、、、實(shí)現(xiàn)”。后面的提法是不是有問題,比如“基于SCA的物流信息共享平臺的實(shí)現(xiàn)”。因?yàn)閺母拍钌现v,SCA只是一個實(shí)現(xiàn)而已.


          還有,LZ既然從SCA0.9規(guī)范就開始研究,為什么SCA1.0出來后,為什么就不寫了呢。LZ的文章道理還是講得很透徹的。

          # re: 淺談SCA  回復(fù)  更多評論   

          2007-10-30 16:45 by yihong
          不好意思,第5和第6是從其他的一篇文章看過來的,發(fā)的時候不小心就發(fā)上去了。感覺您的BLOG今年就沒更新了,呵呵
          如有可能,能否還說說Spring在SCA中的實(shí)現(xiàn)

          # re: 淺談SCA  回復(fù)  更多評論   

          2007-10-31 13:28 by Dart
          To yihong:

          我很久沒有更新blog了,我的SCA Container也已經(jīng)1年沒有更新代碼了。我也放松了對技術(shù)方面的學(xué)習(xí),這可能就是我這個人最大的弱點(diǎn)吧。不過謝謝你的提醒,我想我會重新拾起這些久違的東西。


          我胡亂回答一下你的問題:
          1:所謂服務(wù)就是提供一定功能的實(shí)體,提供服務(wù)的實(shí)體我們可以稱之為服務(wù)提供者,是這樣吧?SCA中,將模型劃分成幾個不同粒度,其實(shí)我覺得都可以看成服務(wù)提供者,但是他們的粒度不一樣。我覺得Component可能是最小的服務(wù)粒度。在0.9中,對外提供服務(wù)的話需要使用Composite。你所說的domain應(yīng)該是從0.96后的版本加入的吧,我覺得它也是服務(wù)提供者。SCA把這些同為服務(wù)提供者的模型分正這幾類粒度,可能是從SOA設(shè)計(jì)角色考慮出發(fā)的——設(shè)計(jì)人員和開發(fā)人員考慮的角度是不一樣的。
          2:WebService在sca中被稱為一個binding,它利用協(xié)議綁定的形式進(jìn)行描述,而進(jìn)行訪問的時候,我們根本就不需要知道它是不是web服務(wù),因?yàn)槲覀兌际峭ㄟ^domain去查找出服務(wù)代理,然后調(diào)用方法的。那在調(diào)用過程中,具體如何調(diào)用(WebService?JMS?),服務(wù)消費(fèi)者(調(diào)用服務(wù)的人)是不知道的。
          3:你提到了IBM的Mediation module。我也看過那篇文章,不是很懂。我覺得SCA本身就具備ESB的一些功能,它們兩者之間有很懂相似的地方。有時候我會把SCA看成一個ESB的實(shí)現(xiàn)。如果要加入已有的ESB的話,我想可以通過擴(kuò)展SCA的Binding來做到這一點(diǎn)吧。
          4:對于組件打包這個問題我一點(diǎn)都不知道了,不能回答你了。
          5:我覺得SCA應(yīng)該是囊括了組件層、服務(wù)層、業(yè)務(wù)流程層。組件層可以看成已經(jīng)發(fā)布的Domain或者一些其他的可以利用SCA訪問的可用功能組件;服務(wù)層就不說了(服務(wù)無處不在);業(yè)務(wù)流程層應(yīng)該說是BPEL吧,那應(yīng)該在SCA對應(yīng)的是BPEL implement 才對,所以說這些所謂“層”對應(yīng)到SCA模型是不能直接連線的。其實(shí)可以這么看,服務(wù)層和組建層做為原子業(yè)務(wù)功能的提供層,業(yè)務(wù)流程層則是組合這些原子功能的地方。
          7:SCA是一種設(shè)計(jì),開發(fā)的模型指導(dǎo)方案,WebService可以看成組成SCA的一個技術(shù)部分。
          8:這個我倒無所謂,只是需要明確:SOA是方法論,SCA是一種技術(shù)規(guī)范。
          主站蜘蛛池模板: 合作市| 汾阳市| 昌图县| 云梦县| 花垣县| 苍山县| 阜康市| 长乐市| 武威市| 长丰县| 开远市| 新河县| 凌源市| 余干县| 西华县| 长垣县| 揭东县| 垫江县| 深圳市| 九龙坡区| 龙陵县| 麻栗坡县| 保德县| 阿克陶县| 深水埗区| 涞水县| 马公市| 托里县| 重庆市| 津市市| 陵川县| 成都市| 内黄县| 桃园市| 乐安县| 那曲县| 娱乐| 青田县| 彭山县| 永济市| 甘南县|