1、概述
SCA (Service Component Architecture) 是一個開發SOA(Service-Oriented Architecture)面向服務應用的簡單模型規範,它描述用於使用SOA構建應用程式和系統的模型。它可簡化使用SOA進行的應用程式開發和實現工作。SCA僅僅是個規範(http://www.osoa.org),各個涉及SOA技術的公司的實現也各不相同。本文主要分析Apache Tuscany開源項目 (http://incubator.apache.org/tuscany/)中的SCA設計架構;因為我們不能滿足於會用,而從這些大師們的作品中汲取營養,知其然,也要知其所以然,當我們面對需求(比如說SCA規範),都擁有同樣的語言功底,如何設計一個開放性,可擴充性的架構,就是一個挑戰。因為Tuscany設計理念博大精深,開放式的結構思想,效能方面的考慮,安全方面的考慮,不一而足,所以不可能在一篇短文中詳細介紹,將在後續的文章中不斷地深入剖析,提取設計架構和設計技巧的精華之處,供廣大軟體界同仁共用。
2、SCA規範基礎知識
SCA編程模型是高擴充性和語言中立的,它易於被擴充為多種實現語言技術JAVA,C++,BPEL,PHP, Spring等,多種遠端存取bindings包括Web Service,JMS, EJB,JSON RPC等,多種主機環境例如Tomcat,Jetty,Geronimo,OSGI等。SCA分隔式架構可以使開發人員更注重商務邏輯,而不必要關注諸如可靠性,安全,事務等系統屬性,這些屬性都配置到設定檔中。SCA的組成部分如下圖所示:(本文涉及的SCA術語不翻譯)
圖1
(1)Component
深藍色方框(Component A和Component B)表示是Component。Component是SCA原子(最基層的組織單元),其封裝了實際的商務邏輯。Component可以採用運行環境支援的任何編程技術實現。例如,Apache Tuscany項目目前支援Java、JavaScript、Ruby、Python和C++組件類型,同時為建立新的組件類型提供了擴充API。
(2)Property
Property (Component A和Component B上方的黃色方框和Composite A的黃色小方框)。Property控制Component的行為,在部署其間可以被可改變。同時Composite也可以有Property,但其Property是Component Property升級(Promote)後的Property。
(3)Service
Service是供其它Component調用時使用。在圖中介面用Component方框左邊的綠色箭頭來表示,被稱作SCA的“服務”(Service)。
(4)Reference
Component也描述了被該Component調用的其它組件的介面,在圖中這樣的介面用組件方框右邊的粉紅色箭頭來表示,稱為SCA的“引用”(Reference)。這些Service和Reference被串連在一起,組成一個可啟動並執行系統。
(5)Composite
如果說Component是SCA架構中的原子,那麼Composite就是SCA架構中的分子;圖中的兩個Component,A和B,被組裝在一個更大Composite範圍內,被稱作Composite A。SCA的Composite描述了一個由互相串連的Component所構成的集合。正如你所看到,Composite也聲明了Service和Reference,它們被暴露到Composite外部。Composite的service和Reference是Composite內部的Component的Service和Reference的升級。一個Composite內部的Component彼此串連就如同建立一個運行在同一進程中的緊耦合的應用程式。將Composite通過Service和Reference串連在一起,則形成了一個更加松耦合的系統;系統中的每一個Composite都可能運行在一個單獨的進程或處理器中,在網路中通過各種的協議和傳輸綁定串連起來。通過這個途徑SCA為獨立和分布式應用提供了統一的編程模型。