天天看點

SCA 架構

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設計理念博大精深,開放式的結構思想,性能方面的考慮,安全方面的考慮,不一而足,是以不可能在一篇短文中詳細介紹,将在後續的文章中不斷地深入剖析,提取設計架構和設計技巧的精華之處,供廣大軟體界同仁共享。

SCA 架構

2、SCA規範基礎知識

SCA程式設計模型是高擴充性和語言中立的,它易于被擴充為多種實作語言技術JAVA,C++,BPEL,PHP, Spring等,多種遠端通路bindings包括Web Service,JMS, EJB,JSON RPC等,多種主機環境例如Tomcat,Jetty,Geronimo,OSGI等。SCA分隔式架構可以使開發者更注重業務邏輯,而不必要關注諸如可靠性,安全,事務等系統屬性,這些屬性都配置到配置檔案中。

(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為獨立和分布式應用提供了統一的程式設計模型。

(6)Wire

       Wire是連接配接Service和Reference的連線。

(7)Promote

       Promote是wire的特殊表現形式,是把Component級别Service或者Reference更新為Composite級别的連線。

(8)Domain

      Domain是個邏輯的概念,管理跨機器,跨程序的Composite,同時Composite也可以跨機器跨程序部署,進而可以管理分布式部署的SCA,是以Domain是個相當重要的SCA概念。其實除了Domain是管理含義外,還有外部接口界面的含義。