Java SOA 基本觀、架構與實做 <2>

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)
(點擊圖片鏈接看原圖)圖 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
(點擊圖片鏈接看原圖)圖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. 內含一個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 一個一個定義出來。

Java SOA 基本觀、架構與實做 ─ {01}

文章導覽

   

共有 6 則迴響

    • 代 Ringle 回應一下:SCA Service Component Architecture Assembly Model Specification, 2007

      本篇與該篇文章撰寫者是 Ringle 本人沒錯。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *