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ù)客戶機和各種組件的組裝。 面向服務(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ù)的組裝,通過定義良好的接口和契約進行連接。 服務(wù)組件體系結(jié)構(gòu) (SCA) 是一個規(guī)范,它描述用于使用 SOA 構(gòu)建應(yīng)用程序和系統(tǒng)的模型。它可簡化使用 SOA 進行的應(yīng)用程序開發(fā)和實現(xiàn)工作。 SCA 可簡化使用 SOA 構(gòu)建的業(yè)務(wù)應(yīng)用程序的創(chuàng)建和集成。SCA 提供了構(gòu)建粗粒度組件的機制,這些粗粒度組件由細(xì)粒度組件組裝而成。 SCA 將傳統(tǒng)中間件編程從業(yè)務(wù)邏輯分離出來,從而使程序員免受其復(fù)雜性的困擾。它允許開發(fā)人員集中精力編寫業(yè)務(wù)邏輯,而不必將大量的時間花費在更為底層的技術(shù)實現(xiàn)上。 SCA 方法的優(yōu)勢包括:
SCA 將構(gòu)建面向服務(wù)的應(yīng)用程序的步驟劃分為兩個主要部分:
SCA 提供了一種機制,用于打包和部署那些緊密相關(guān)的組件,這些組件是作為一個整體開發(fā)和部署的。這種機制使服務(wù)的實現(xiàn)和組裝避免了陷入基礎(chǔ)設(shè)施功能的細(xì)節(jié),也避免了調(diào)用外部系統(tǒng)。這樣可支持不同基礎(chǔ)設(shè)施間的服務(wù)可移植性。 服務(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)用,或者用于遠程訪問。 組裝一個組合業(yè)務(wù)應(yīng)用程序的過程,在此過程中配置并連接提供服務(wù)實現(xiàn)的組件。SCA 組裝在兩個層次進行:
SCA 組裝模型包括一系列由 XML 元素定義的構(gòu)件。 SCA 模塊 是一起開發(fā)和部署到 SCA 系統(tǒng) 的最大緊密耦合組件。它是 SCA 系統(tǒng)內(nèi)的松散耦合組合的基本單元。SCA 模塊包含一系列組件、外部服務(wù)、入口點,以及用于銜接這些部分的機制。模塊向 SCA 系統(tǒng)提供服務(wù)實現(xiàn)。 入口點 定義模塊提供的公共服務(wù),此服務(wù)可以由同一模塊內(nèi)的其他組件使用,也可以在模塊外使用。入口點用于使用特定的綁定 發(fā)布模塊提供的服務(wù)。 模塊內(nèi)的外部服務(wù) 表示其他模塊提供的遠程服務(wù)。它們位于使用此服務(wù)的 SCA 模塊之外。組件可以像訪問 SCA 組件提供的任何服務(wù)一樣訪問這些外部服務(wù)。外部服務(wù)使用綁定來描述對外部服務(wù)的訪問。 外部服務(wù)的接口必須為可遠程訪問的。 在SCA 系統(tǒng) 中,SCA 系統(tǒng) 用于聚合那些提供了相關(guān)業(yè)務(wù)功能的模塊。這是通過配置和管理模塊組件、外部服務(wù)、入口點,以及連接機制來完成的。SCA 系統(tǒng)的配置由所有部署到其中的子系統(tǒng)的組合加以表示。圖 1 是系統(tǒng)組裝的一個示例;它說明了如何使用服務(wù)和引用連接各個子系統(tǒng)和模塊。 圖 1. 服務(wù)組件體系結(jié)構(gòu) ![]() 讓我們逐個分析一下圖 1 中所看到的內(nèi)容:
有一個開放源代碼項目提供服務(wù)組件體系結(jié)構(gòu)的運行時實現(xiàn),您可以使用該實現(xiàn)來運行 SCA 應(yīng)用程序。此項目稱為 Tuscany,目前在 Apache 中處于孵化期。此項目的主要參與者有 IBM、BEA、Oracle、Sybase、SAP、IONA 和 Siebel。 在本文中,我們介紹了 SCA 體系結(jié)構(gòu)及其組裝模型,并說明了 SCA 子系統(tǒng)及各種組件,包括組成此子系統(tǒng)的模塊、連接機制和外部服務(wù)。這些細(xì)節(jié)應(yīng)該能夠幫助您理解使用 SCA 構(gòu)建和集成不同業(yè)務(wù)應(yīng)用程序所需的各個概念。
|