SCA的規格
SCA (Service Component Architecture) 是由 OSOA (Open Service Oriented Architecture) 的組織所訂定的 SOA 元件的標準規格。
SCA 的主要目的在於訂定一個統一的程式標準,讓想要採用 SOA 的組織,可以透過該標準獲得一致性的程式寫作的方式。原則上 OSOA 的組織是由幾個支援 SOA 軟體的大廠(IBM、TIBCO、Oracle(with Bea)、Red Hat、Sun…等)所組成 (OSOA 的網址),也因此,在理論上,學會SCA的標準規格,應該可以對不同的SOA產品有一致性地程式寫作策略。
在SCA規格中,其中最重要的一個部分就是一個標準的組合模型 (Assembly Model),下圖即為該組合模型的基本示意圖:
(點擊圖片鏈接看原圖)圖 2. SCA 的元件圖 (Component Diagram)
ref: SCA Service Component Architecture Assembly Model Specification, 2007, p. 3
上圖表達了一個SCA所定義的Component的幾個重要特性以及相關的Domain名詞,包括:
- Component:代表Service的群組集合體,一般來說,Component通常指的是一個Function Group;通常來說,Component的實際實現的方式,有可能是各式各樣不同的方法(可以是一般的Java Code,或是BPEL,甚至是其他Component組合而成)。
- services:代表Component所提供的服務,一個Service意指一段不可分割的操作,通常來說,一個Service就代表了單一個Function。
- properties:代表Component中所必要的一些屬性,定義出來的Property在Component中會被共用,一般來說,我們很有可能在Property中設定一些會共用的複雜資料型態。
- references:若是Component會用到外部的服務時,你可以利用reference直接設定參考的service。
如同前面所說,Component 本身在 Implement 時,有可能是結合了其他的 Component 來組成,這樣的 Component 則稱之為「Composite (複合)」,Composite 的結構如下所示:
(點擊圖片鏈接看原圖)圖3. SCA Composite Diagram
ref: SCA Service Component Architecture Assembly Model Specification, 2007, p. 4
從上圖中,我們又增加了幾個不同的名詞定義:
- Binding:指Service所提供的相關的型態,可以是一個Web Service或是其他的Interface(SCA、JCA、JMS…)。
- Promote:指Service對應到內部的Component的Service或是外部的Reference對應到Component的Reference。
- Wire:意指Composite內部不同Component之間的連結,通常必須透過Componenet的Reference對應到Component的Service。
- Property setting:指Composite的Property對應到Component的Property。
以下,讓我們用一個簡單的例子來說明SCA的結構。
(點擊圖片鏈接看原圖)圖4. 內含一個Componenet的Composite結構
上圖 4 是一個名叫「MyValueComposite」的 SCA 結構。在這個結構中,其內含一個 Component ,並且由一個 Service Promote 到該 Component的 Service;另外外部的兩個 Reference 則 Promote 到 Component 的 Reference。假設 Component 是以 Java 來 Implement (實現),則上圖 4的SCA XML的定義,如下所示:
<?xml version="1.0" encoding="ASCII"?> <!-- MyValueComposite_1 example --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://foo.com" name="MyValueComposite" > <service name="MyValueService" promote="MyValueServiceComponent"/> <component name="MyValueServiceComponent"> <implementation.java class="services.myvalue.MyValueServiceImpl"/> <property name="currency">EURO</property> <reference name="customerService"/> <reference name="stockQuoteService"/> </component> <reference name="CustomerService" promote="MyValueServiceComponent/customerService"/> <reference name="StockQuoteService" promote="MyValueServiceComponent/stockQuoteService"/> </composite> |
從以上的說明可以看出,其實 SCA 的主要目的是定義一個 XML 的標準 Schema,讓 SOA 的廠商可以根據這些 Schema 來定義其 Service,而針對 Developer 來說,則可以利用統一的 SCA 標準的 XML 定義檔將企業的 Service 一個一個定義出來。
你好, 請問一下, 這篇文章: http://www.kenming.idv.tw/java-soa-basic-architecture-implement-02 (Java SOA 基本觀、架構與實做 )
撰寫者是: Ringle, 他的中文全名是? 我想引用這篇文章.
Hi Sonic~
請隨意引用,名字就叫做 Ringle Lai,全名就是這個作者:
http://www.books.com.tw/exep/prod/booksfile.php?item=0010513353
Thank you , Kenming Wang.
Ringle Lai 您好,
打擾了, 請問一下, 這篇文章: http://www.kenming.idv.tw/java-soa-basic-architecture-implement-02
的出處是在哪裡? 撰寫者是您嗎?
謝謝!
代 Ringle 回應一下:SCA Service Component Architecture Assembly Model Specification, 2007
本篇與該篇文章撰寫者是 Ringle 本人沒錯。