我們可能應該回答的第一個問題也是最基本的問題。什么是面向
服務的體系結(jié)構(gòu)(Service-Oriented Architecture,
SOA)?這個問題的答案實際上涉及與開發(fā)相關(guān)的若干不同方面。
SOA 是一種 IT 體系結(jié)構(gòu)樣式,支持將您的業(yè)務作為鏈接服務或可重復業(yè)務任務進行集成,可在需要時通過網(wǎng)絡(luò)訪問這些服務和任務。這個網(wǎng)絡(luò)可能完全包含在您的公司總部內(nèi),也可能分散于各地且采用不同的技術(shù),通過對來自紐約、倫敦和香港的服務進行組合,可讓最終用戶感覺似乎這些服務就安裝在本地桌面上一樣。需要時,這些服務可以將自己組裝為按需應用程序——即相互連接的服務提供者和使用者集合,彼此結(jié)合以完成特定業(yè)務任務,使您的業(yè)務能夠適應不斷變化的情況和需求(在有些情況下,甚至不需要人工干預)。
這些服務是自包含的,具有定義良好的接口,允許這些服務的用戶——稱為客戶機或使用者——了解如何與其進行交互。從技術(shù)角度而言,SOA 帶來了“松散耦合”的應用程序組件,在此類組件中,代碼不一定綁定到某個特定的數(shù)據(jù)庫(甚至不一定綁定到特定的基礎(chǔ)設(shè)施)。正是得益于這個松散耦合特性,才使得能夠?qū)⒎战M合為各種應用程序。這樣還大幅度提高了代碼重用率,可以在增加功能的同時減少工作量。由于服務和訪問服務的客戶機并未彼此綁定,因此可以完全替換用于處理訂單的服務,下訂單的客戶機-服務將永遠不會知道這個更改。所有交互都是基于“服務契約”進行的;服務契約用于定義服務提供者和客戶機之間的交互。通常,您將通過創(chuàng)建“基于消息的”系統(tǒng)來實現(xiàn)此目標。
從業(yè)務的角度來說,面向服務的體系結(jié)構(gòu)的重點在于開發(fā)能幫助您完成業(yè)務任務的技術(shù),而不是通過技術(shù)約束來規(guī)定您的行動。例如,銷售過程(制造、運輸和收到貨款)可能會涉及數(shù)十個步驟和若干不同的數(shù)據(jù)庫和計算機系統(tǒng)。但就其實質(zhì)而言,此過程包含一系列人工活動,例如:
﹡銷售人員找到潛在客戶
﹡客戶訂購產(chǎn)品
﹡生產(chǎn)部門制造產(chǎn)品
﹡生產(chǎn)部門發(fā)出產(chǎn)品
﹡收款部門開具產(chǎn)品帳單
﹡客戶支付產(chǎn)品貨款
面向服務的體系結(jié)構(gòu)基于這些實際活動或業(yè)務服務進行組織,而不是形成公司所維護的不同的信息豎井 (Silo)。通過實現(xiàn) SOA,可以帶來大量好處,包括以下各個方面:
﹡更高的業(yè)務和 IT 一致性
﹡基于組件的系統(tǒng)
﹡松散耦合的組件和系統(tǒng)
﹡基于網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,允許分散于各地且采用不同技術(shù)的資源協(xié)同工作
﹡動態(tài)構(gòu)建的按需應用程序
﹡更高的代碼重用率
﹡更好地標準化整個企業(yè)內(nèi)的流程
﹡更易于集中企業(yè)控制