那么什么是SOA,讓我們先從基本概念開(kāi)始講起。
什么是SOA?
SOA的關(guān)鍵是“服務(wù)”的概念,W3C將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結果。最終結果通常會(huì )使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化”。
Service-architecture.com將SOA定義為:“本質(zhì)上是服務(wù)的集合。服務(wù)間彼此通信,這種通信可能是簡(jiǎn)單的數據傳送,也可能是兩個(gè)或更多的服務(wù)協(xié)調進(jìn)行某些活動(dòng)。服務(wù)間需要某些方法進(jìn)行連接。所謂服務(wù)就是精確定義、封裝完善、獨立于其他服務(wù)所處環(huán)境和狀態(tài)的函數!
Looselycoupled.com將SOA定義為:“按需連接資源的系統。在SOA中,資源被作為可通過(guò)標準方式訪(fǎng)問(wèn)的獨立服務(wù),提供給網(wǎng)絡(luò )中的其他成員。與傳統的系統結構相比,SOA規定了資源間更為靈活的松散耦合關(guān)系!
Gartner則將SOA描述為:“客戶(hù)端/服務(wù)器的軟件設計方法,一項應用由軟件服務(wù)和軟件服務(wù)使用者組成……SOA與大多數通用的客戶(hù)端/服務(wù)器模型的不同之處,在于它著(zhù)重強調軟件組件的松散耦合,并使用獨立的標準接口!
Gartner相信BPM和SOA的結合對所有類(lèi)型的應用集成都大有助益??“SOA極大的得益于BPM技術(shù)和方法論,但是SOA面臨的真正問(wèn)題是確立正確的企業(yè)意識,即:強化戰略化的SOA計劃(針對供應和使用)并鼓勵重用!
雖然不同廠(chǎng)商或個(gè)人對SOA有著(zhù)不同的理解,但是我們仍然可以從上述的定義中看到SOA的幾個(gè)關(guān)鍵特性:一種粗粒度、松耦合服務(wù)架構,服務(wù)之間通過(guò)簡(jiǎn)單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。
需著(zhù)重注意的是,SOA并不是新生事物??大型IT組織成功構建和部署SOA應用已有多年的歷史??這要比現有的XML和Web服務(wù)長(cháng)很多。IBM CICS和BEA TUXEDO就是過(guò)去被用于構建SOA應用的兩種技術(shù)范例。
SOA要求開(kāi)發(fā)人員將應用設計為服務(wù)的集合。SOA要求開(kāi)發(fā)人員跳出應用本身進(jìn)行思考,考慮現有服務(wù)的重用,或思索他們的服務(wù)如何能夠被其他項目重用!皢为毜摹、“獨立的”、“封裝完善的”服務(wù)所具有的一個(gè)關(guān)鍵的好處是,可以采用多種不同方法將它們組合成較大型的服務(wù),由此來(lái)實(shí)現重用。
但是,SOA并不僅僅是一種開(kāi)發(fā)方法??它還具有管理上的優(yōu)點(diǎn)。例如,現在管理員可直接管理開(kāi)發(fā)人員所構建的相同服務(wù),這遠勝于以往管理單個(gè)應用的方式。通過(guò)分析服務(wù)間的交互,SOA可以幫助企業(yè)了解何時(shí)以及為什么業(yè)務(wù)邏輯被切實(shí)執行了,這使管理員或分析師能夠有針對性的優(yōu)化業(yè)務(wù)流程。
SOA的基本特征
SOA的實(shí)施具有幾個(gè)鮮明的基本特征。實(shí)施SOA的關(guān)鍵目標是實(shí)現企業(yè)IT資產(chǎn)的最大化重用。要實(shí)現這一目標,就要在實(shí)施SOA的過(guò)程中牢記以下特征:
﹡ 可從企業(yè)外部訪(fǎng)問(wèn)
﹡ 隨時(shí)可用
﹡ 粗粒度的服務(wù)接口
﹡ 分級
﹡ 松散耦合
﹡ 可重用的服務(wù)
﹡ 服務(wù)接口設計管理
﹡ 標準化的服務(wù)接口
﹡ 支持各種消息模式
﹡ 精確定義的服務(wù)契約
我們現在開(kāi)始依次討論以上概念。
1 可從企業(yè)外部訪(fǎng)問(wèn)
通常被稱(chēng)為業(yè)務(wù)伙伴的外部用戶(hù)也能像企業(yè)內部用戶(hù)一樣訪(fǎng)問(wèn)相同的服務(wù)。業(yè)務(wù)伙伴采用先進(jìn)的B2B協(xié)議(ebXML或RosettaNet)相互合作。當業(yè)務(wù)伙伴基于業(yè)務(wù)目的交換業(yè)務(wù)信息時(shí),他們就參與了一次會(huì )話(huà)。會(huì )話(huà)是業(yè)務(wù)伙伴間一系列的一條或多條業(yè)務(wù)信息的交換。會(huì )話(huà)類(lèi)型(會(huì )話(huà)復雜或簡(jiǎn)單、長(cháng)或短等)取決于業(yè)務(wù)目的。
除了B2B協(xié)議外,外部用戶(hù)還可以訪(fǎng)問(wèn)以Web服務(wù)方式提供的企業(yè)服務(wù)。
2 隨時(shí)可用
當有服務(wù)使用者請求服務(wù)時(shí),SOA要求必須有服務(wù)提供者能夠響應。大多數SOA都能夠為門(mén)戶(hù)應用之類(lèi)的同步應用和B2B之類(lèi)的異步應用提供服務(wù)。同步應用對于其所使用的服務(wù)具有很強的依賴(lài)性。
當相比之下,異步應用要更為穩健,因為其采用隊列請求設計,因此可以容許出現服務(wù)提供者短缺或遲滯的情況。異步應用大多數情況下部署在后臺,用戶(hù)通常不會(huì )覺(jué)察到短暫的短缺。大部分情況下異步應用能夠穩健應對短時(shí)間短缺,但是長(cháng)時(shí)間短缺則會(huì )引發(fā)嚴重問(wèn)題。在服務(wù)短缺解決、隊列引擎將罕見(jiàn)的大量工作推到共享的應用資源中時(shí),可能會(huì )出現隊列溢出甚至服務(wù)死鎖。
服務(wù)使用者要求提供同步服務(wù)時(shí),通常是基于其自身理解或使用習慣。在多數情況下,采用異步模型可以達到同樣的效果,但更能夠體現SOA的最佳特性。
當然,并不是所有情況下都應當采用異步設計模式。但大多數情況下,異步消息可以確保系統在不同負荷下的伸縮性,在接口響應時(shí)間不是很短時(shí)尤其如此。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/