深入淺出了解SOA技術
引言:
SOA的全稱是Service-Oriented Architecture,面向服務架構。
是一種架構,不是一種具體的開發技術。
SOA超越了軟體開發語言本身。是一種面向服務的架構,與軟體開發語言無關。
軟體開發本身來說,SOA是一種技術,又超越了所有具體的技術。
SOA是一種架構模型,它可以根據需求通過網絡對松散耦合的粗粒度應用元件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,進而有效控制系統中與軟體代理網際網路的人為依賴性。SOA的幾個關鍵特性:一種粗粒度、松耦合服務架構,服務之間通過簡單、精确定義擴充卡進行通訊,不涉及底層程式設計擴充卡和通訊模型。
面向服務架構SOA(Service-Oriented Architecture)是一種架構模型和一套設計方法學,其目的是最大限度地重用應用程式中立型的服務以提高IT适應性和效率。它可以根據需求通過網絡對松散耦合的粗粒度應用元件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,進而有效控制系統中與軟體代理互動的人為依賴性。SOA的關鍵是“服務”的概念,W3C将服務定義為:“服務提供者完成一組工作,為服務使用者傳遞所需的最終結果。最終結果通常會使使用者的狀态發生變化,但也可能使提供者的狀态改變,或者雙方都産生變化”。
SOA(Service-Oriented Architecture),面向服務的架構,它是一種分布式的系統構架風格(Architecture Style),簡單說來OOP使用細粒度的本地對象來建構系統,但在分布式應用中,基于性能的考慮,必須要控制遠端通路的次數,常常基于用戶端的要求提供接口,而不是OOADP中使用的基于職責的方式分解類和職責,是以SOA通常采用“粗粒度”對象,如EJB、COM+元件、WebService,每次通路常常是無狀态的,基于服務的方式。
1、彙編語言開發
2、面向過程的軟體
3、面向對象的元件開發
4、面向服務的架構開發
首先,SOA是一種開發思想。是一種松耦合的架構。可以讓軟體超越開發語言。
其次,SOA的開發需要SOA體系的支撐,就像J2EE應用一樣,離不開應用伺服器。SOA也一樣,也有一個類似J2EE伺服器的東西支援着整個SOA體系架構----ESB(Enterprise Service Bus),企業服務總線。通過這個總線,将多個系統連接配接起來。
其次,SOA是基于消息請求響應的一個系統,對請求類型有高度的相容性。與一個Web應用容器相比,web應用容器隻能處理HTTP請求,而 SOA的ESB可以接受HTTP、FTP、WebService、JMS...等請求。這就使得SOA架構具有高度的相容性,可以将不同的平台內建到一起,進而互相協調工作。
1、軟體開發技術的不斷提高。
2、硬體性能的提升,價格下降,投出SOA所消耗的成本為企業所能忍受。
3、SOA受到了IMB、Oracle、Sun、Microsoft等大公司的熱力追捧,被捧紅了,實際上,一直以來都是這些公司在引領軟體應用的潮流。
4、SOA技術革命每年有上千億美元的市場價值。軟體要更新,這些服務提供商才可以買出更多的中間件伺服器,賣出更多的硬體,賺取更多利潤。
5、很多企業的軟體應用系統已經滿足不了資訊高度內建化的要求,為了提高企業的核心競争力,企業不惜重金,上SOA。
6、SOA的招牌很響亮,超越了一切,相容了一切。它不摒棄舊系統,而是将很多舊系統繼承起來,就可以實作。
1、基于SOA是的思想和技術,SOA最适合最擅長的就是系統內建。而系統內建的關鍵就是提取公共的有價值的服務。各個系統通過暴露服務,經過ESB這條總線連接配接後,就将幾個系統內建起來了。這在新一代軟體開發中也許會得到應用。
2、SOA的架構注定SOA在中小企業内部沒有多大價值。中小企業的攤子還不夠大。
3、SOA系統內建難點在于抽取公共的服務。對于老的系統來說,抽取服務就是抽筋。很難很難,意味着要修改軟體,要适合SOA的胃口。是以,對一些不同語言開發的系統來說,使用SOA進行系統實際上是扯淡。
對SOA口号叫的最響的是IBM,出書最多的也是IBM,成功的案例還沒看到。所有的大公司都在忽悠,希望拿到第一筆大單。
SOA以來ESB,ESB本身也是一種中間件,或者說是一個增強了的企業應用伺服器。目前開源的有幾個,也沒見過成功的案例。估計SOA技術從起步到成熟還有很長一段路要走。ESB的實作還需要一個發展過程。
相反與SOA有緊密聯系WebService技術已經深入人心。現在用的比較多。