|
2006 年 12 月 07 日
本
文是介紹服務(wù)組件體系結(jié)構(gòu)(Service Component Architecture,SCA)的系列文章的第 1 部分。此部分將概覽
SCA,并說明它如何簡化使用面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented
Architecture,SOA)所構(gòu)建的業(yè)務(wù)應(yīng)用程序的設(shè)計和集成。本系列的后續(xù)文章將討論 SCA
體系結(jié)構(gòu)及其主要概念,包括服務(wù)實現(xiàn)、服務(wù)客戶機(jī)和各種組件的組裝。
引言
面向服務(wù)的體系結(jié)構(gòu) (SOA) 是一個框架,用于組合各個業(yè)務(wù)功能和流程(稱為服務(wù)),以便實現(xiàn)復(fù)雜的業(yè)務(wù)應(yīng)用程序和流程。在 SOA
框架中,相對粗粒度的業(yè)務(wù)組件被作為服務(wù)公開。SOA 將 IT 資產(chǎn)構(gòu)造為一系列可重用的服務(wù),這些服務(wù)是松散耦合的,與平臺和實現(xiàn)無關(guān)。SOA
將解決方案設(shè)計為服務(wù)的組裝,通過定義良好的接口和契約進(jìn)行連接。
服務(wù)組件體系結(jié)構(gòu) (SCA) 是一個規(guī)范,它描述用于使用 SOA 構(gòu)建應(yīng)用程序和系統(tǒng)的模型。它可簡化使用 SOA 進(jìn)行的應(yīng)用程序開發(fā)和實現(xiàn)工作。
動機(jī)
SCA 可簡化使用 SOA 構(gòu)建的業(yè)務(wù)應(yīng)用程序的創(chuàng)建和集成。SCA 提供了構(gòu)建粗粒度組件的機(jī)制,這些粗粒度組件由細(xì)粒度組件組裝而成。
SCA 將傳統(tǒng)中間件編程從業(yè)務(wù)邏輯分離出來,從而使程序員免受其復(fù)雜性的困擾。它允許開發(fā)人員集中精力編寫業(yè)務(wù)邏輯,而不必將大量的時間花費在更為底層的技術(shù)實現(xiàn)上。
SCA 方法的優(yōu)勢包括:
- 簡化業(yè)務(wù)組件開發(fā)
- 簡化作為服務(wù)網(wǎng)絡(luò)構(gòu)建的業(yè)務(wù)解決方案的組裝和部署
- 提高可移植性、可重用性和靈活性
- 通過屏蔽底層技術(shù)變更來保護(hù)業(yè)務(wù)邏輯資產(chǎn)
- 提高可測試性
SCA 體系結(jié)構(gòu)
SCA 將構(gòu)建面向服務(wù)的應(yīng)用程序的步驟劃分為兩個主要部分:
- 實現(xiàn)提供服務(wù)和使用其他服務(wù)的組件
- 組裝組件,以通過服務(wù)引用其他服務(wù)的方式來構(gòu)建業(yè)務(wù)應(yīng)用程序
SCA 提供了一種機(jī)制,用于打包和部署那些緊密相關(guān)的組件,這些組件是作為一個整體開發(fā)和部署的。這種機(jī)制使服務(wù)的實現(xiàn)和組裝避免了陷入基礎(chǔ)設(shè)施功能的細(xì)節(jié),也避免了調(diào)用外部系統(tǒng)。這樣可支持不同基礎(chǔ)設(shè)施間的服務(wù)可移植性。
服務(wù)實現(xiàn)和服務(wù)客戶機(jī)
服務(wù)實現(xiàn)是業(yè)務(wù)邏輯的具體實現(xiàn),提供服務(wù)和/或使用服務(wù)。這些實現(xiàn)會使用眾多實現(xiàn)技術(shù)中的任意一種,如 Java?、BPEL 或 C++。實現(xiàn)是業(yè)務(wù)流程的“仆人”。
實現(xiàn)可以提供服務(wù),而服務(wù)則是由一個接口定義的一組操作,此接口供其他組件調(diào)用。實現(xiàn)也可以調(diào)用其他服務(wù),稱之為服務(wù)引用,服務(wù)引用指示了此實現(xiàn)對外界服務(wù)的依賴關(guān)系。實現(xiàn)還可以具有一個或多個可配置屬性。屬性是可以從外部配置的數(shù)據(jù)值,會影響此實現(xiàn)的業(yè)務(wù)功能。
SCA 服務(wù)通常對參數(shù)和返回值使用文檔樣式的業(yè)務(wù)數(shù)據(jù),最好使用服務(wù)數(shù)據(jù)對象(Service Data Object,SDO)表示這些參數(shù)(有關(guān)更多信息,請參見參考資料部分)。
服務(wù)、引用和屬性是實現(xiàn)的可配置方面——SCA 將其統(tǒng)稱為組件類型。
配置引用是通過將引用綁定到目標(biāo)服務(wù)來完成的,隨后實現(xiàn)可以通過調(diào)用引用來使用目標(biāo)服務(wù)。屬性的配置將涉及到為屬性設(shè)置具體的數(shù)據(jù)值。在 SCA
框架中,可以使用一個實現(xiàn)構(gòu)建多個不同的組件,每個組件具有不同的引用和屬性配置。組件及其服務(wù)可以被其他本地組件調(diào)用,或者用于遠(yuǎn)程訪問。
組裝
組裝一個組合業(yè)務(wù)應(yīng)用程序的過程,在此過程中配置并連接提供服務(wù)實現(xiàn)的組件。SCA 組裝在兩個層次進(jìn)行:
- 系統(tǒng)內(nèi)松散連接的組件的組裝
- 模塊內(nèi)松散連接的組件的組裝
SCA 組裝模型包括一系列由 XML 元素定義的構(gòu)件。
模塊組裝
SCA 模塊 是一起開發(fā)和部署到 SCA 系統(tǒng) 的最大緊密耦合組件。它是 SCA 系統(tǒng)內(nèi)的松散耦合組合的基本單元。SCA 模塊包含一系列組件、外部服務(wù)、入口點,以及用于銜接這些部分的機(jī)制。模塊向 SCA 系統(tǒng)提供服務(wù)實現(xiàn)。
入口點 定義模塊提供的公共服務(wù),此服務(wù)可以由同一模塊內(nèi)的其他組件使用,也可以在模塊外使用。入口點用于使用特定的綁定 發(fā)布模塊提供的服務(wù)。
模塊內(nèi)的外部服務(wù) 表示其他模塊提供的遠(yuǎn)程服務(wù)。它們位于使用此服務(wù)的 SCA 模塊之外。組件可以像訪問 SCA 組件提供的任何服務(wù)一樣訪問這些外部服務(wù)。外部服務(wù)使用綁定來描述對外部服務(wù)的訪問。
外部服務(wù)的接口必須為可遠(yuǎn)程訪問的。
系統(tǒng)組裝
在SCA 系統(tǒng) 中,SCA 系統(tǒng) 用于聚合那些提供了相關(guān)業(yè)務(wù)功能的模塊。這是通過配置和管理模塊組件、外部服務(wù)、入口點,以及連接機(jī)制來完成的。SCA 系統(tǒng)的配置由所有部署到其中的子系統(tǒng)的組合加以表示。圖 1 是系統(tǒng)組裝的一個示例;它說明了如何使用服務(wù)和引用連接各個子系統(tǒng)和模塊。
圖 1. 服務(wù)組件體系結(jié)構(gòu)
讓我們逐個分析一下圖 1 中所看到的內(nèi)容:
- 子系統(tǒng)配置中的模塊組件表示 SCA 模塊的一個已配置實例,模塊組件可以在其中為模塊的外部服務(wù)設(shè)置值,并能夠為模塊公開的屬性設(shè)置值。
- 外部服務(wù)是位于使用服務(wù)的 SCA 系統(tǒng)外部的遠(yuǎn)程服務(wù)。模塊級別的外部服務(wù)與系統(tǒng)級別的外部服務(wù)的不同之處包括:
- 名稱必須在子系統(tǒng)中定義的所有外部服務(wù)中保持唯一性。
- 子系統(tǒng)中沒有與模塊組件具有相同名稱的外部服務(wù),因為它們都可能成為連接機(jī)制的目標(biāo)。
- 入口點用于聲明可外部訪問的子系統(tǒng)服務(wù)。它們由其他組裝或客戶作為 Web 服務(wù)使用。模塊級別的入口點和系統(tǒng)級別的入口點的不同之處包括:
- 名稱必須在子系統(tǒng)內(nèi)定義的所有入口點中保持唯一性。子系統(tǒng)內(nèi)不能存在與模塊組件同名的入口點。
- 引用子元素的指定是可選的,因為可以通過另一個子系統(tǒng)提供的連接機(jī)制進(jìn)行連接。
開放源代碼運行時和工具
有一個開放源代碼項目提供服務(wù)組件體系結(jié)構(gòu)的運行時實現(xiàn),您可以使用該實現(xiàn)來運行 SCA 應(yīng)用程序。此項目稱為 Tuscany,目前在 Apache 中處于孵化期。此項目的主要參與者有 IBM、BEA、Oracle、Sybase、SAP、IONA 和 Siebel。
結(jié)束語
在本文中,我們介紹了 SCA 體系結(jié)構(gòu)及其組裝模型,并說明了 SCA 子系統(tǒng)及各種組件,包括組成此子系統(tǒng)的模塊、連接機(jī)制和外部服務(wù)。這些細(xì)節(jié)應(yīng)該能夠幫助您理解使用 SCA 構(gòu)建和集成不同業(yè)務(wù)應(yīng)用程序所需的各個概念。
參考資料
作者簡介
 |
|
 |
Sreedevi Penugonda 是 IBM Java 技術(shù)中心的一位系統(tǒng)軟件工程師。她專長于分布式對象計算系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)及算法和操作系統(tǒng)
|
 |
|
 |
Rakesh Kumar Dash 是 IBM Java 技術(shù)中心的一位系統(tǒng)軟件工程師。他對 RMI 和 ORB 開發(fā)進(jìn)行了廣泛的研究。他所感興趣的領(lǐng)域包括 SOA、Web 服務(wù)、CORBA 和操作系統(tǒng)。
|
|