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


Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/cvxvgjca/public_html/www.kenming.idv.tw/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

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 本人沒錯。

發佈留言

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