SOA是一種架構模型,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
SOA的關鍵是“服務”的概念,W3C將服務定義為:“服務提供者完成一組工作,為服務使用者交付所需的最終結果。最終結果通常會使使用者的狀態發生變化,但也可能使提供者的狀態改變,或者雙方都產生變化”。
Service-architecture.com將SOA定義為:“本質上是服務的集合。服務間彼此通信,這種通信可能是簡單的數據傳送,也可能是兩個或更多的服務協調進行某些活動。服務間需要某些方法進行連接。所謂服務就是精確定義、封裝完善、獨立于其他服務所處環境和狀態的函數。”
Looselycoupled.com將SOA定義為:“按需連接資源的系統。在SOA中,資源被作為可通過標準方式訪問的獨立服務,提供給網絡中的其他成員。與傳統的系統結構相比,SOA規定了資源間更為靈活的松散耦合關系。”
Gartner則將SOA描述為:“客戶端/服務器的軟件設計方法,一項應用由軟件服務和軟件服務使用者組成……SOA與大多數通用的客戶端/服務器模型的不同之處,在于它著重強調軟件組件的松散耦合,并使用獨立的標準接口。”
Gartner相信BPM和SOA的結合對所有類型的應用集成都大有助益??“SOA極大的得益于BPM技術和方法論,但是SOA面臨的真正問題是確立正確的企業意識,即:強化戰略化的SOA計劃(針對供應和使用)并鼓勵重用。”
雖然不同廠商或個人對SOA有著不同的理解,但是我們仍然可以從上述的定義中看到SOA的幾個關鍵特性:一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。
需著重注意的是,SOA并不是新生事物,大型IT組織成功構建和部署SOA應用已有多年的歷史,這要比現有的XML和Web服務長很多。IBM CICS和BEA TUXEDO就是過去被用于構建SOA應用的兩種技術范例。
重點說明的是SOA并不是一種現成的技術,而是一種架構和組織IT基礎結構及業務功能的方法。SOA是一種在計算環境中設計、開發、部署和管理離散邏輯單元(服務)的模型。這一定義闡明了SOA的范圍。
SOA要求開發人員將應用設計為服務的集合。SOA要求開發人員跳出應用本身進行思考,考慮現有服務的重用,或思索他們的服務如何能夠被其他項目重用。“單獨的”、“獨立的”、“封裝完善的”服務所具有的一個關鍵的好處是,可以采用多種不同方法將它們組合成較大型的服務,由此來實現重用。
但是,SOA并不僅僅是一種開發方法??它還具有管理上的優點。例如,現在管理員可直接管理開發人員所構建的相同服務,這遠勝于以往管理單個應用的方式。通過分析服務間的交互,SOA可以幫助企業了解何時以及為什么業務邏輯被切實執行了,這使管理員或分析師能夠有針對性的優化業務流程。
SOA的基本特征
SOA的實施具有幾個鮮明的基本特征。實施SOA的關鍵目標是實現企業IT資產的最大化重用。要實現這一目標,就要在實施SOA的過程中牢記以下特征:
* 可從企業外部訪問
* 隨時可用
* 粗粒度的服務接口
* 分級
* 松散耦合
* 可重用的服務
* 服務接口設計管理
* 標準化的服務接口
* 支持各種消息模式
* 精確定義的服務契約
SOA的優點
編碼靈活性
可基于模塊化的低層服務、采用不同組合方式創建高層服務,從而實現重用,這些都體現了編碼的靈活性。此外,由于服務使用者不直接訪問服務提供者,這種服務實現方式本身也可以靈活使用。
明確開發人員角色
例如,熟悉BES的開發人員可以集中精力在重用訪問層,協調層開發人員則無須特別了解BES的實現,而將精力放在解決高價值的業務問題上。
支持多種客戶類型
借助精確定義的服務接口和對XML、Web服務標準的支持,可以支持多種客戶類型,包括PDA、手機等新型訪問渠道。
更易維護
服務提供者和服務使用者的松散耦合關系及對開放標準的采用確保了該特性的實現。
更好的伸縮性
依靠服務設計、開發和部署所采用的架構模型實現伸縮性。服務提供者可以彼此獨立調整,以滿足服務需求。
更高的可用性
該特性在服務提供者和服務使用者的松散耦合關系上得以體現。使用者無須了解提供者的實現細節,這樣服務提供者就可以在WebLogic集群環境中靈活部署,使用者可以被轉接到可用的例程上。
SOA可以看作是B/S模型、XML/Web Service技術之后的自然延伸。SOA將能夠幫助我們站在一個新的高度理解企業級架構中的各種組件的開發、部署形式,它將幫助企業系統架構者以更迅速、更可靠、更具重用性架構整個業務系統。較之以往,以SOA架構的系統能夠更加從容地面對業務的急劇變化。