這是一系列文章的第二部分。這一系列文章旨在幫助您更好地理解面向服務(wù)的體系結(jié)構(gòu)(SOA)的價(jià)值,制訂出一個(gè)實(shí)際的計(jì)劃來評(píng)估您現(xiàn)在的基礎(chǔ)架構(gòu),并把它轉(zhuǎn)變成一個(gè)真正的面向服務(wù)的體系結(jié)構(gòu)。其目的在于,當(dāng)您讀完本文時(shí),您將理解為什么聲稱 SOA 是把現(xiàn)有資產(chǎn)帶到未來的最好的平臺(tái),同時(shí)也使得迅速而正確地開發(fā)未來的程序成為可能。另外,您將對(duì)在計(jì)劃這樣一次遷移的過程中主要考慮的事項(xiàng)有更好的理解。這一系列文章的第一部分描述了推動(dòng)考慮 SOA 的動(dòng)力和這樣的一個(gè)體系結(jié)構(gòu)的需求。現(xiàn)在,第二部分將繼續(xù)討論服務(wù)和接口。
服務(wù)的性質(zhì)
什么是服務(wù)?如前所述,在一個(gè)典型的業(yè)務(wù)環(huán)境里,服務(wù)意味著業(yè)務(wù)函數(shù)、業(yè)務(wù)事務(wù)和系統(tǒng)服務(wù)。業(yè)務(wù)函數(shù)可能是 getStockQuote、getCustomerAddress 或 checkCreditRating。業(yè)務(wù)事務(wù)可能是 commitInventory、sellCoveredOption 或 scheduleDelivery。系統(tǒng)服務(wù)可能是 logMessageIn、getTimeStamp 或 openFile。請(qǐng)注意各種類型服務(wù)之間的區(qū)別。從應(yīng)用程序的角度來看,業(yè)務(wù)函數(shù)實(shí)際上是原子的非系統(tǒng)函數(shù)。業(yè)務(wù)事務(wù)很像是調(diào)用應(yīng)用程序的簡(jiǎn)單函數(shù),但是它們可能是作為自己的事務(wù)的上下文所包含的復(fù)合函數(shù)來實(shí)現(xiàn)的。它們可能包括多個(gè)底層函數(shù),這些底層函數(shù)對(duì)調(diào)用者來說是透明的。系統(tǒng)函數(shù)是能夠從諸如 Windows 或者 Linux 這樣的特定平臺(tái)中抽象出來的廣義函數(shù)。應(yīng)用程序框架可能提供像 openFile 這樣的廣義函數(shù)來有效地虛擬化數(shù)據(jù)源,從而可以在不考慮真實(shí)數(shù)據(jù)源的類型和位置的情況下使用這類函數(shù)。
這看起來像人為地規(guī)定服務(wù)之間的區(qū)別;您可以從應(yīng)用程序的角度斷言,所有的服務(wù)都是原子的,而與它是業(yè)務(wù)服務(wù)還是系統(tǒng)服務(wù)無關(guān)。做出這樣的區(qū)別僅僅是為了引入粒度這個(gè)重要的概念。將業(yè)務(wù)程序分解成服務(wù)不僅僅是一個(gè)抽象的過程;它具有非常真實(shí)的現(xiàn)實(shí)含義。根據(jù)定義,服務(wù)可能是低級(jí)(細(xì)粒度的)函數(shù),也可能是復(fù)雜的高級(jí)(粗粒度的)函數(shù),并且在性能、靈活性、可維護(hù)性和可重用性方面都有很現(xiàn)實(shí)的折衷選擇。定義服務(wù)的過程通常是在更大的作用域(應(yīng)用程序框架的作用域)內(nèi)完成的。這才是必須做的實(shí)際工作:也就是開發(fā)基于組件的應(yīng)用程序框架,其中,服務(wù)定義為一組可重用的組件,而這些組件又可以用來構(gòu)建新的應(yīng)用程序或集成現(xiàn)有的軟件資產(chǎn)。
現(xiàn)在,可以獲得很多這樣的框架;在 IBM,一些像 EWA、JADE 和 Struts (來自 Jakarta)的這樣的框架正用在客戶集成場(chǎng)景中。以 EWA (讀作“Eva”)為例(它來自 IBM Software Group Advanced Technology Solutions 組),在一個(gè)較高的層次上,框架看起來如 圖 1 所示。在這個(gè)框架中,配置定義了一個(gè)應(yīng)用程序,描述了該應(yīng)用程序的組件以及它們調(diào)用的順序和方法。以源中立的方式接收輸入并將其傳送到應(yīng)用程序。因此,舉例來說,用現(xiàn)有的 ATM 訪問將因特網(wǎng)連接添加到一個(gè)銀行應(yīng)用程序,對(duì)應(yīng)用程序邏輯來說是透明的。前端設(shè)備和協(xié)議處理程序使其成為可能。核心提供系統(tǒng)級(jí)服務(wù),而特定用途的使得能夠連接后端企業(yè)應(yīng)用程序,這樣它們就可以保持原來的狀態(tài),或者在一段時(shí)間以后進(jìn)行遷移。雖然 EWA 是完全遵循 J2EE,但是它可以連接到外部基于 DCOM 或 CORBA 組件的系統(tǒng)。
現(xiàn)在,EWA 包括超過 1500 個(gè)的常規(guī)和特定用途的組件,從而大大地減少了編寫新的應(yīng)用程序所需的代碼數(shù)量。本系列的另一篇文章將詳細(xì)地研究應(yīng)用程序框架以及用戶在開發(fā)這樣一個(gè)應(yīng)用程序框架的過程中需要什么。
解決前面的問題
現(xiàn)在,讓我們回到討論第一個(gè)集成場(chǎng)景,尋找一個(gè)將所需的接口數(shù)量減到最少的 Scheme,如 圖 2 所示。
這張圖看起來可能過于簡(jiǎn)化,但是現(xiàn)在可以很清楚地看出,在像 EWA 這樣的框架中,這張圖是一個(gè)起點(diǎn)。現(xiàn)在,添加屬于體系結(jié)構(gòu)概念范圍的服務(wù)總線(Service Bus)(在 圖 3 中用深色的中線表示)和服務(wù)或流管理器來連接服務(wù)和提供服務(wù)請(qǐng)求的路徑。流管理器處理定義好的執(zhí)行序列或服務(wù)流,它們將按照適當(dāng)?shù)捻樞蛘{(diào)用所需的服務(wù)來產(chǎn)生最后的結(jié)果。業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language,BPEL)就是這種將流程定義為一組服務(wù)調(diào)用的技術(shù)的例子。
在這里,您需要確定如何調(diào)用服務(wù),因而您將添加應(yīng)用程序配置。接著,虛擬化輸入和輸出。最后,提供到后端流程的連接,以便使它們可以按“僅此狀態(tài)”運(yùn)行,并且還可以在將來進(jìn)行遷移。現(xiàn)在,這個(gè)高層次的圖至少在結(jié)構(gòu)上是完整的了,如 圖 4 所示。
這張圖與 EWA 框圖有一些類同之處是毫不奇怪的;在最高的層次上,任何健壯的應(yīng)用程序框架都必須提供這些功能。然而,從現(xiàn)在起,真正的工作開始了——構(gòu)建 1500 個(gè)組件來豐富這個(gè)骨架。這就是為什么很多 IT 架構(gòu)師選擇在一個(gè)現(xiàn)有的框架中進(jìn)行實(shí)現(xiàn)的原因;把現(xiàn)有的應(yīng)用程序分解成用于框架的組件就夠了,而不必重新開發(fā)所有其他已知將要用到的通用用途組件和系統(tǒng)組件。無論您如何使用它,您都可以使用現(xiàn)有的技術(shù)和框架來實(shí)現(xiàn)該體系結(jié)構(gòu),所以您繞了一整圈,現(xiàn)在又回到了開始的地方,在這里,流程首先分析必須解決的業(yè)務(wù)問題。如果您敢肯定您的體系結(jié)構(gòu)事實(shí)上是可實(shí)現(xiàn)的,您現(xiàn)在就可以這樣做。
體系結(jié)構(gòu)中的集成需求
討論至此,集成已限定為通過基于組件的服務(wù)進(jìn)行的應(yīng)用程序的集成,但是集成這個(gè)主題比這要寬泛得多。在估計(jì)一個(gè)體系結(jié)構(gòu)的需求時(shí),必須考慮一些集成的類型或“方式”。您必須考慮如下幾方面:
- 應(yīng)用程序集成
- 終端用戶界面集成
- 應(yīng)用程序連接
- 流程集成
- 信息集成
-
構(gòu)建集成開發(fā)模型。
終端用戶界面集成涉及如何集成特定用戶訪問的全部應(yīng)用程序和服務(wù)來提供可用、高效、一致的界面。它是一個(gè)正在發(fā)展的主題,而新的發(fā)展在近期將主要取決于 Portal 服務(wù)器使用方面的進(jìn)展。雖然 Portlet 已經(jīng)可以通過 Web 服務(wù)調(diào)用本地服務(wù)組件,但是新技術(shù)(比如用戶遠(yuǎn)程 Portlet 的 Web 服務(wù))將使內(nèi)容和應(yīng)用程序提供者能夠創(chuàng)建交互式服務(wù),這些服務(wù)在因特網(wǎng)上可以通過 Portal 即插即用,從而為很多新的集成提供了可能。
應(yīng)用程序連接是一種集成方式,它涉及體系結(jié)構(gòu)必須支持的所有類型的連接。在一個(gè)層次上,這意味著數(shù)據(jù)的同步和異步通信、路由、轉(zhuǎn)換和高速分布、以及網(wǎng)關(guān)和協(xié)議轉(zhuǎn)換器等等。而在另一個(gè)層次上,它還與輸入和輸出或源(sources)和匯(sinks)的虛擬化有關(guān),正如您在 EWA 的通道(Channel)和協(xié)議轉(zhuǎn)換程序(Protocol Handlers)中所看到的。這里的問題在于數(shù)據(jù)移入、移出以及在實(shí)現(xiàn)體系結(jié)構(gòu)的框架中移動(dòng)的方式。
流程集成涉及開發(fā)映射到業(yè)務(wù)流程和為業(yè)務(wù)流程提供解決方案的計(jì)算流程、將應(yīng)用程序集成到流程以及集成一些流程與其他一些流程。雖然第一項(xiàng)需求可能看起來似乎無關(guān)緊要,不過就是體系結(jié)構(gòu)提供一個(gè)模擬基本業(yè)務(wù)問題的環(huán)境,但是,如果在這一層中不進(jìn)行充分的分析,體系結(jié)構(gòu)的任何實(shí)現(xiàn)注定都將失敗,不管它采用的技術(shù)是多么的巧妙。將應(yīng)用程序集成到流程可能包括企業(yè)中的應(yīng)用程序,也可能涉及調(diào)用遠(yuǎn)程系統(tǒng)中的應(yīng)用程序或服務(wù),而這些遠(yuǎn)程系統(tǒng)多半屬于業(yè)務(wù)合作伙伴。同樣地,流程層集成可能涉及整個(gè)流程的集成而不僅僅是來自外部源的單個(gè)服務(wù),比如供應(yīng)鏈管理或金融服務(wù)這樣橫跨多個(gè)機(jī)構(gòu)的流程。為了滿足這樣的應(yīng)用程序和流程的集成需求,可以使用像 BPEL4WS 這樣的技術(shù),而應(yīng)用程序框架也可以使用程序配置 Scheme(比如在 EWA 中看到的)。實(shí)際上,可以在底層使用 BPEL4WS 來構(gòu)造一個(gè)高層配置 Scheme,然后通過一個(gè)引擎來驅(qū)動(dòng),這個(gè)引擎不僅提供流管理,而且還提供其他功能。然而,在構(gòu)建這一切之前,您應(yīng)該首先了解體系結(jié)構(gòu)方面的需求,然后,再構(gòu)建合適的基礎(chǔ)架構(gòu)。
信息集成是一個(gè)流程,其作用在于為所有需要它的應(yīng)用程序提供對(duì)企業(yè)中全部數(shù)據(jù)的一致訪問,而不管這些應(yīng)用程序是以什么形式需要它,也不受數(shù)據(jù)的格式、來源或位置的限制。在實(shí)現(xiàn)時(shí),這項(xiàng)需求可能包括 適配器和轉(zhuǎn)換引擎,不過它通常要比這復(fù)雜。而關(guān)鍵的概念往往是數(shù)據(jù)的虛擬化,這可能包括 數(shù)據(jù)總線(Data Bus)的開發(fā),企業(yè)中的所有應(yīng)用程序都通過標(biāo)準(zhǔn)服務(wù)或接口從數(shù)據(jù)總線中請(qǐng)求數(shù)據(jù)。因此,不管數(shù)據(jù)是來自電子數(shù)據(jù)表、本地文件、SQL 或 DL/I 數(shù)據(jù)庫(kù),還是來自內(nèi)存中的數(shù)據(jù)存儲(chǔ),都可以將數(shù)據(jù)提供給應(yīng)用程序。永久存儲(chǔ)中的數(shù)據(jù)格式可能還不為應(yīng)用程序所知。應(yīng)用程序更不知道管理數(shù)據(jù)的操作系統(tǒng),因而訪問 AIX 或 Linux 系統(tǒng)中的本地文件的方式與這些文件放在 Windows、OS/2、ZOS 或其他系統(tǒng)中時(shí)訪問它們的方式相同。同樣地,數(shù)據(jù)的位置也是透明的;由于它是由共同的服務(wù)提供的,所以是由訪問服務(wù)而不是由應(yīng)用程序來負(fù)責(zé)查詢數(shù)據(jù)(無論是本地的還是遠(yuǎn)程的),然后按照請(qǐng)求的格式提供數(shù)據(jù)。
應(yīng)用程序開發(fā)環(huán)境的最后一項(xiàng)需求是,必須考慮可能在企業(yè)中實(shí)現(xiàn)的集成的所有方式和層次,并且為它們的開發(fā)和部署做好準(zhǔn)備。要想真正做到健壯,開發(fā)環(huán)境必須包括(和執(zhí)行)一種方法來明確地規(guī)定如何設(shè)計(jì)和構(gòu)建服務(wù)和組件,以便促進(jìn)重用、消除冗余和簡(jiǎn)化測(cè)試、部署和維護(hù)。
上面列出的所有集成方式在任何企業(yè)中都有一定程度的體現(xiàn),盡管在某些情況下它們可能是簡(jiǎn)化的,或者沒有明確地進(jìn)行定義;因而,在著手設(shè)計(jì)新的體系結(jié)構(gòu)框架時(shí),您必須全面的考慮它們。特定的 IT 環(huán)境可能只有很少的數(shù)據(jù)源類型,因此,消息集成可能會(huì)很簡(jiǎn)單。同樣地,應(yīng)用程序連接的作用域可能也很有限。雖然如此,如果希望框架能夠隨著企業(yè)的成長(zhǎng)和變化成功地繼續(xù)得以保持,則框架中的集成功能仍然必須由服務(wù)提供,而不是由特定的應(yīng)用程序來完成。
部署面向服務(wù)的體系結(jié)構(gòu)的好處
面向服務(wù)的體系結(jié)構(gòu)可以基于現(xiàn)有的系統(tǒng)投資來發(fā)展,而不需要徹底重新創(chuàng)建系統(tǒng)。如果組織將開發(fā)力量集中在創(chuàng)建服務(wù)、利用現(xiàn)有的技術(shù)、結(jié)合基于組件的方法來開發(fā)軟件上,將獲得如下幾方面好處:
-
利用現(xiàn)有資產(chǎn) —— 這是首要的需求。通過使用適當(dāng)?shù)?SOA 框架并使其可用于整個(gè)企業(yè),可以將業(yè)務(wù)服務(wù)構(gòu)造成現(xiàn)有組件的集合。使用這種新的服務(wù)只需要知道它的接口和名稱。服務(wù)的內(nèi)部細(xì)節(jié)以及在組成服務(wù)的組件之間傳送的數(shù)據(jù)的復(fù)雜性都對(duì)外界隱藏了。這種組件的匿名性使組織能夠利用現(xiàn)有的投資,從而可以通過合并構(gòu)建在不同的機(jī)器上、運(yùn)行在不同的操作系統(tǒng)中、用不同的編程語言開發(fā)的組件來創(chuàng)建服務(wù)。遺留系統(tǒng)可以通過 Web 服務(wù)接口來封裝和訪問。
-
商品化基礎(chǔ)架構(gòu) —— 在所有不同的企業(yè)應(yīng)用程序之間,基礎(chǔ)架構(gòu)的開發(fā)和部署將變得更加一致。現(xiàn)有的組件、新開發(fā)的組件和從廠商購(gòu)買的組件可以合并在一個(gè)定義良好的 SOA 框架內(nèi)。這樣的組件集合將被作為服務(wù)部署在現(xiàn)有的基礎(chǔ)構(gòu)架中,從而使得可以更多地將基礎(chǔ)架構(gòu)作為一種商品化元素來加以考慮
-
更快的產(chǎn)品上市速度 —— 組織的 Web 服務(wù)庫(kù)將成為采用 SOA 框架的組織的核心資產(chǎn)。使用這些 Web 服務(wù)庫(kù)來構(gòu)建和部署服務(wù)將顯著地加快產(chǎn)品的上市速度,因?yàn)閷?duì)現(xiàn)有服務(wù)和組件的新的創(chuàng)造性重用縮短了設(shè)計(jì)、開發(fā)、測(cè)試和部署產(chǎn)品的時(shí)間。
-
減少成本 —— 隨著業(yè)務(wù)需求的發(fā)展和新的需求的引入,通過采用 SOA 框架和服務(wù)庫(kù),為現(xiàn)有的和新的應(yīng)用程序增強(qiáng)和創(chuàng)建新的服務(wù)的成本大大地減少了。同樣,開發(fā)團(tuán)隊(duì)的學(xué)習(xí)難讀也降低了,因?yàn)樗麄兛赡芤呀?jīng)熟悉了現(xiàn)有的組件。
-
降低風(fēng)險(xiǎn) —— 重用現(xiàn)有的組件降低了在增強(qiáng)或創(chuàng)建新的業(yè)務(wù)服務(wù)的過程中帶來的風(fēng)險(xiǎn)。如前所述,這也減少了維護(hù)和管理支持服務(wù)的基礎(chǔ)架構(gòu)的風(fēng)險(xiǎn)。
-
持續(xù)改進(jìn)業(yè)務(wù)過程 —— SOA 允許清晰地表示流程流,這些流程流通過在特定業(yè)務(wù)服務(wù)中使用的組件的順序來標(biāo)識(shí)。這給商業(yè)用戶提供了監(jiān)視業(yè)務(wù)操作的理想環(huán)境。業(yè)務(wù)建模反映在業(yè)務(wù)服務(wù)中。流程操縱是以一定的模式重組部件(構(gòu)成業(yè)務(wù)服務(wù)的組件)來實(shí)現(xiàn)的。這將進(jìn)一步允許更改流程流,而同時(shí)監(jiān)視產(chǎn)生的結(jié)果,因此促進(jìn)了持續(xù)改進(jìn)。
-
以流程為中心的體系結(jié)構(gòu)—— 現(xiàn)有的體系結(jié)構(gòu)模型和實(shí)踐往往是以程序?yàn)橹行牡摹?yīng)用程序是為了程序員的便利而開發(fā)的。通常,流程信息在組件之間傳播。應(yīng)用程序很像一個(gè)黑匣子,沒有粒度可用于外部。重用需要復(fù)制代碼、合并共享庫(kù)或繼承對(duì)象。在以流程為中心的體系結(jié)構(gòu)中,應(yīng)用程序是為過程開發(fā)的。流程可以分解成一系列的步驟,每一個(gè)步驟表示一個(gè)業(yè)務(wù)服務(wù)。實(shí)際上,每個(gè)過程服務(wù)或組件功能都相當(dāng)于一個(gè)子應(yīng)用程序。將這些子應(yīng)用程序鏈接在一起可以創(chuàng)建能夠滿足業(yè)務(wù)需求的流程流。這種粒度允許利用和重用整個(gè)組織中的子應(yīng)用程序。
|
|
未來 —— 新模型,新需求
到目前為止,討論集中在滿足現(xiàn)有業(yè)務(wù)的需求、更好地利用和重用資源以及集成現(xiàn)有的和新的應(yīng)用程序的相關(guān)概念上。但是,一個(gè)全新的應(yīng)用程序模型究竟是什么樣的呢?面向服務(wù)的體系結(jié)構(gòu)的觀念是否仍然有意義或者是必不可少的呢?實(shí)際上,兩種新的概念已經(jīng)開始實(shí)現(xiàn)了:網(wǎng)格計(jì)算(Grid Computing)和按需計(jì)算(On-demand Computing)。雖然這兩個(gè)模型是截然不同的,并且是獨(dú)立開發(fā)的,但是它們之間的關(guān)系又是非常的緊密,而每個(gè)模型都使 SOA 的發(fā)展更加勢(shì)在必行。
網(wǎng)格計(jì)算
深入討論網(wǎng)格計(jì)算超出了本文的范圍,但是有幾個(gè)要點(diǎn)值得提及的。其一,網(wǎng)格計(jì)算不僅是使用擁有大量 MIPS 的應(yīng)用程序來進(jìn)行計(jì)算的解決方案,它還涉及包括硬件、應(yīng)用程序和數(shù)據(jù)在內(nèi)的所有系統(tǒng)資源的虛擬化,因此,在網(wǎng)格中,無論在什么地方,用什么方法,只要需要就可以利用這些資源。其二,前面的章節(jié)已經(jīng)討論了虛擬化數(shù)據(jù)源和將應(yīng)用程序分解成基于組件的服務(wù)的重要性,所以很容易理解在網(wǎng)格環(huán)境中,一個(gè)真正的 SOA 應(yīng)該更好地獲得最多的資源。
按需計(jì)算
On-demand 也不在我們討論的范圍之內(nèi),但是如果在這里不簡(jiǎn)要地介紹一下 On-demand 和 SOA 之間的關(guān)系,那將是不負(fù)責(zé)任的。Web 服務(wù)是實(shí)現(xiàn) SOA 的技術(shù),而 SOA 是實(shí)現(xiàn) On-demand 應(yīng)用程序的體系結(jié)構(gòu)。應(yīng)用程序必需運(yùn)行在 SOA 框架內(nèi),以便獲得 on-demand 的好處。
On-demand Web 服務(wù) On-demand 是涵蓋寬譜系的 On-demand 消息的一部分。譜系的一端集中于應(yīng)用程序環(huán)境,而另一端則集中于包括像基礎(chǔ)架構(gòu)和自主計(jì)算在內(nèi)的操作環(huán)境。業(yè)務(wù)轉(zhuǎn)換利用應(yīng)用程序和操作環(huán)境來創(chuàng)建 On-demand 業(yè)務(wù)。On-demand 業(yè)務(wù)最核心的是 On-demand Web 服務(wù),應(yīng)用程序?qū)拥姆?wù)可以按照準(zhǔn)時(shí)制(just-in-time)集成能力的要求來發(fā)現(xiàn)、重構(gòu)、裝配和交付。
Web 服務(wù)作為一項(xiàng)切實(shí)可行的技術(shù)的希望在于,它將通過提供諸如按需服務(wù)這樣的能力提高業(yè)務(wù)價(jià)值,并且隨著時(shí)間的推移將轉(zhuǎn)變 IT 組織開發(fā)軟件的方式。它甚至完全有可能通過 Web 轉(zhuǎn)變?cè)诶婀餐w(包括貿(mào)易合作伙伴、客戶和其他類型的合作關(guān)系)中經(jīng)營(yíng)業(yè)務(wù)以及提供產(chǎn)品和服務(wù)的方式。如果您所有的應(yīng)用程序共享相同的傳輸層協(xié)議?如果它們都理解相同的接口?如果它們能夠參與并理解相同的事務(wù)模型?如果您的伙伴也一樣?當(dāng)這一些都實(shí)現(xiàn)的時(shí)候,展現(xiàn)在您面前的將是什么樣的場(chǎng)景呢?相信到那時(shí),您將擁有應(yīng)用程序和基礎(chǔ)架構(gòu)來支持不斷變化的業(yè)務(wù)情況;您將獲得 On-demand 。而 Web 服務(wù)和 SOA 會(huì)使這一切對(duì)應(yīng)用程序成為可能。
總結(jié)
面向服務(wù)的體系結(jié)構(gòu)是下一步應(yīng)用程序開發(fā)的重點(diǎn)。服務(wù)和面向服務(wù)的體系結(jié)構(gòu)都是關(guān)于使用異構(gòu)網(wǎng)絡(luò)可尋址的軟件組件來設(shè)計(jì)和構(gòu)建系統(tǒng)的。面向服務(wù)的體系結(jié)構(gòu)是一種具有特殊性質(zhì)的體系結(jié)構(gòu),它由強(qiáng)調(diào)互操作性和位置透明度的組件互連而成。它常常是在現(xiàn)有系統(tǒng)投資的基礎(chǔ)上發(fā)展起來的,并不需要徹底重新開發(fā)全部的系統(tǒng);它通過利用當(dāng)前的資源(包括開發(fā)人員、軟件語言、硬件平臺(tái)、數(shù)據(jù)庫(kù)和應(yīng)用程序)來利用組織現(xiàn)有的投資,從而在提高生產(chǎn)力的同時(shí)降低成本和風(fēng)險(xiǎn)。這種可適應(yīng)的、靈活的體系結(jié)構(gòu)類型為在開發(fā)和維護(hù)中縮短產(chǎn)品上市時(shí)間以及降低成本和風(fēng)險(xiǎn)提供了基礎(chǔ)。Web 服務(wù)是一些實(shí)現(xiàn) SOA 的技術(shù),而 SOA 正在成為開發(fā)響應(yīng)性好、可適應(yīng)的新型應(yīng)用程序所選擇的體系結(jié)構(gòu)。