月蝕傳說(shuō)

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

          淺談SCA

          Posted on 2006-10-06 04:24 Dart 閱讀(3038) 評(píng)論(10)  編輯  收藏 所屬分類(lèi): SCA

          SCA 是由幾家國(guó)內(nèi)外知名企業(yè)聯(lián)合制定的,他們成立了一個(gè)名為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),而且在以后的版本中,會(huì)陸續(xù)加入其他的實(shí)現(xiàn)標(biāo)準(zhǔn),也就是說(shuō) SCA 并不是只針對(duì)某一種語(yǔ)言的,不同語(yǔ)言或者環(huán)境之間通過(guò)開(kāi)放的,標(biāo)準(zhǔn)的技術(shù)來(lái)實(shí)現(xiàn)互操作,比如我們常見(jiàn)的WebService等


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

          目前來(lái)看,雖然有很多標(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)站看看。國(guó)內(nèi)的一家 Framework 廠(chǎng)商普元也加入到了 OSOA ,并且也宣布會(huì)在 2007 年發(fā)布一套 SCA 框架的 Framework

          ?

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

          ?

          Module

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


          module_over.JPG



          它包括了

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


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


          <? 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


          對(duì)于一個(gè)
          Module 內(nèi)部來(lái)說(shuō), Component 是絕對(duì)的主力。


          要說(shuō)起
          Component ComponentType 就不得不說(shuō)。


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


          < 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 就不說(shuō)了, WSDL 想必大家也都知道,通過(guò)它的描述我們可以得到一個(gè)很準(zhǔn)確的接口。服務(wù)接口是一個(gè)可以擴(kuò)展的屬性,我們可以定義出其他不同的接口類(lèi)型,當(dāng)然,前提是所使用的 SCA 必須能識(shí)別并支持才行。


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


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


          Component
          就是完成上述 ComponentType 沒(méi)有完成的工作。


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

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


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


          < 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 >

          ?

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


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

          ?

          EntryPoint


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


          module2module.JPG

          ?

          ?

          Entry Point 自身是只能定義自己的訪(fǎng)問(wèn)接口,但是真正的具體實(shí)現(xiàn)(比如一個(gè) Java Class ),是通過(guò)它自身的 Reference 指定的。 Reference 指向的是一個(gè) Component ,這就意味著,該 Entry Point 的調(diào)用是直接利用 Component 的實(shí)現(xiàn)來(lái)完成的。下面是 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 >

          ?

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

          ?

          Binding


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


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

          ?

          廣告


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

          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 類(lèi)似,只是一個(gè)是對(duì)外發(fā)布,一個(gè)是要去遠(yuǎn)程訪(fǎng)問(wèn)而已。我們一旦指明了 External Service Binding 后,在訪(fǎng)問(wèn)該 External Service 提供的服務(wù)時(shí),我們就會(huì)通過(guò)指定 Binding 類(lèi)型對(duì)遠(yuǎn)程發(fā)布的服務(wù)進(jìn)行訪(fǎng)問(wèn)。


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

          ?

          結(jié)束語(yǔ)


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


          評(píng)論

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

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

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

          2006-10-06 16:13 by pear
          真的不知這些東西是用來(lái)解決什么問(wèn)題的。

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

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

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

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

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

          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上的文章,對(duì)你有幫助

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

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

          TO BlueDavy:

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

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

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

          有不對(duì)的地方還請(qǐng)多多指教

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


          我胡亂回答一下你的問(wèn)題:
          1:所謂服務(wù)就是提供一定功能的實(shí)體,提供服務(wù)的實(shí)體我們可以稱(chēng)之為服務(wù)提供者,是這樣吧?SCA中,將模型劃分成幾個(gè)不同粒度,其實(shí)我覺(jué)得都可以看成服務(wù)提供者,但是他們的粒度不一樣。我覺(jué)得Component可能是最小的服務(wù)粒度。在0.9中,對(duì)外提供服務(wù)的話(huà)需要使用Composite。你所說(shuō)的domain應(yīng)該是從0.96后的版本加入的吧,我覺(jué)得它也是服務(wù)提供者。SCA把這些同為服務(wù)提供者的模型分正這幾類(lèi)粒度,可能是從SOA設(shè)計(jì)角色考慮出發(fā)的——設(shè)計(jì)人員和開(kāi)發(fā)人員考慮的角度是不一樣的。
          2:WebService在sca中被稱(chēng)為一個(gè)binding,它利用協(xié)議綁定的形式進(jìn)行描述,而進(jìn)行訪(fǎng)問(wèn)的時(shí)候,我們根本就不需要知道它是不是web服務(wù),因?yàn)槲覀兌际峭ㄟ^(guò)domain去查找出服務(wù)代理,然后調(diào)用方法的。那在調(diào)用過(guò)程中,具體如何調(diào)用(WebService?JMS?),服務(wù)消費(fèi)者(調(diào)用服務(wù)的人)是不知道的。
          3:你提到了IBM的Mediation module。我也看過(guò)那篇文章,不是很懂。我覺(jué)得SCA本身就具備ESB的一些功能,它們兩者之間有很懂相似的地方。有時(shí)候我會(huì)把SCA看成一個(gè)ESB的實(shí)現(xiàn)。如果要加入已有的ESB的話(huà),我想可以通過(guò)擴(kuò)展SCA的Binding來(lái)做到這一點(diǎn)吧。
          4:對(duì)于組件打包這個(gè)問(wèn)題我一點(diǎn)都不知道了,不能回答你了。
          5:我覺(jué)得SCA應(yīng)該是囊括了組件層、服務(wù)層、業(yè)務(wù)流程層。組件層可以看成已經(jīng)發(fā)布的Domain或者一些其他的可以利用SCA訪(fǎng)問(wèn)的可用功能組件;服務(wù)層就不說(shuō)了(服務(wù)無(wú)處不在);業(yè)務(wù)流程層應(yīng)該說(shuō)是BPEL吧,那應(yīng)該在SCA對(duì)應(yīng)的是BPEL implement 才對(duì),所以說(shuō)這些所謂“層”對(duì)應(yīng)到SCA模型是不能直接連線(xiàn)的。其實(shí)可以這么看,服務(wù)層和組建層做為原子業(yè)務(wù)功能的提供層,業(yè)務(wù)流程層則是組合這些原子功能的地方。
          7:SCA是一種設(shè)計(jì),開(kāi)發(fā)的模型指導(dǎo)方案,WebService可以看成組成SCA的一個(gè)技術(shù)部分。
          8:這個(gè)我倒無(wú)所謂,只是需要明確:SOA是方法論,SCA是一種技術(shù)規(guī)范。
          主站蜘蛛池模板: 辽宁省| 民权县| 闵行区| 石景山区| 任丘市| 鄂托克前旗| 西安市| 辽阳县| 彭泽县| 虎林市| 神池县| 丰城市| 平泉县| 方山县| 阜南县| 禹州市| 锡林浩特市| 九江市| 凌海市| 通渭县| 东明县| 江都市| 昌黎县| 定州市| 老河口市| 常熟市| 大理市| 准格尔旗| 巫山县| 岳普湖县| 龙海市| 贡嘎县| 彰化市| 遂川县| 遂宁市| 泸西县| 中宁县| 同德县| 敦煌市| 都江堰市| 定结县|