首先,需要明確的是,SCA還沒有成為正式的標準,盡管SCA目前已經有比較穩定的規范,有些文章錯誤地將SCA作為標準來看待。
SCA目標:基于組件的編程一直是軟件業簡化編程和提高效率和質量的一個重要方法,但是往往對于不同語言我們有不同的組件模型,比如在J2EE技術領域,就有EJB,POJO,JDBC,JMS等。這對于項目初期分析和設計人員來說,是一個很大的挑戰,導致在初期就需要選定具體的語言和技術。SCA的目的是使用戶在構建企業應用時有一個不再直接面對具體的技術細節的層次,而是通過服務組件的方式來構建應用。這種方式也使得客戶的企業應用具有良好的分層架構,能夠很好的分離應用的業務邏輯和IT邏輯,不但易于應用的構建,也易于應用的更改和部署。
SCA和WSDL
WSDL是Web服務描述語言,但它只定義了服務接口,并不提供描述一個服務所依賴的其它服務,以及這個服務所需要使用的配置策略和服務之間的依賴關系。單獨通過WSDL很難實現服務之間的組合調用。SCA比WSDL走的更遠,SCA定義了服務組件模型以及服務組裝模型。服務模型允許服務開發者不但定義服務的接口而且還定義了這個服務和其他服務的依賴關系,以及這些交互(事務,安全,以及可靠 傳輸)之間的策略,還有服務潛在的配置等功能。服務組件是SCA中的基本組成元素和基本構建單位,也是我們具體實現業務邏輯的地方。我們可以把它看成是構建我們應用的積木。
SCA和JBI
SCA和JBI其目的有很多相同之處:JBI在JSR 208中被定義,已經成為使用Java語言把服務容器組裝為合成應用的標準;SCA是被推薦標準,為在不同平臺不同語言解決組裝問題的提供了更廣泛的方法。SCA關注是的SOA開發者最初看到的和接觸到的,SCA并不關注SCA各個模塊最后是如何實現的。如果把SOA分成三個抽象層次的話:業務、服務、技術。那么SCA對應的就是服務層的規范。JBI提供了一系列的API,用來建立開放、可擴展和模塊化的企業服務總線??梢哉f,JBI已經觸及到具體的技術層面。SCA沒有局限于具體語言,而JBI僅限于用Java,因此JBI的應用范圍更嚴格,在SOA未來的標準體系結構中,可能成為其中的一部分Java實現標準。