SOA架构简介
一、 什么是SOA 架構
SOA是一種架構模型,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
SOA的關鍵是“服務”的概念 。 它是 作為一種面向服務的架構,是一種軟件架構設計的模型和方法論。從業務角度來看,一切以最大化“服務”的價值為出發點,SOA利用企業現有的各種軟件體系,重新整合并構建起一套新的軟件架構。這套軟件架構能夠隨著業務的變化,隨時靈活地結合現有服務,組成新軟件,共同服務于整個企業的業務體系。簡單的理解,我們可以把SOA看作是模塊化的組件,每個模塊都可以實現獨立功能,而不同模塊之間的結合則可以提供不同的服務,模塊之間的接口遵循統一標準,可以實現低成本的重構和重組。在SOA的技術框架下,可以把雜亂無章的龐大系統整合成一個全面有序的系統,從而增加企業在業務發展過程中應用系統的靈活性,實現最大的IT資產利用率。
雖然 ,目前 不同廠商或個人對SOA有著不同的理解,但是 對于 SOA的幾個關鍵特性 的認識卻是一致的 :一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。
需著重注意的是,SOA并不是新生事物 。 大型IT組織成功構建和部署SOA應用已有多年的歷史 。但 SOA并不是一種現成的技術,而是一種架構和組織IT基礎結構及業務功能的方法。SOA 這 種開發方法 , 具有 較好的 管理上的優點。
二、 SOA 架構的基本特征
SOA的實施具有幾個鮮明的基本特征。實施SOA的關鍵目標是實現企業IT資產的最大化重用。要實現這一目標,就要在實施SOA的過程中牢記以下特征:
①? 可從企業外部訪問和時可用
業務伙伴 采用先進的B2B協議(ebXML或RosettaNet )相互合。當業務伙伴基于業務目的交換業務信息時,他們通過 B2B協議 創建會話來完成。而外部用戶則通過web服務方式提供企業服務。
當有服務使用者請求服務時,SOA要求必須有服務提供者能夠響應。大多數SOA都能夠為門戶應用之類的同步應用和B2B之類的異步應用提供服務。
②? 粗粒度的服務接口
粗粒度服務提供一項特定的業務功能,而細粒度服務代表了技術組件方法。采用粗粒度服務接口的優點在于使用者和服務層之間不必再進行多次的往復,一次往復就足夠。
③? 分級
一個關于粗粒度服務的爭論是此類服務比細粒度服務的重用性差,因為粗粒度服務傾向于解決專門的業務問題,因此通用性差、重用性設計困難。解決該爭論的方法之一就是允許采用不同的粗粒度等級來創建服務。這種服務分級包含了粒度較細、重用性較高的服務,也包含粒度較粗、重用性較差的服務。
在服務分級方面,須注意服務層的公開服務通常由后臺系統(BES's)或SOA平臺中現有的本地服務組成。因此允許在服務層創建私有服務是非常重要的。正確的文檔、配置管理和私有服務的重用對于IT部門在SOA服務層快速開發新的公開服務的能力具有重要影響。
④? 松散耦合
SOA具有“松散耦合”組件服務,這一點區別于大多數其他的組件架構。該方法旨在將服務使用者和服務提供者在服務實現和客戶如何使用服務方面隔離開來。 其關鍵 是服務接口作為與服務實現分離的實體而存在 , 這 使得 服務實現能夠在完全不影響服務使用者的情況下進行修改。
多數松散耦合方法都依靠基于服務接口的消息?;谙⒌慕涌谀軌蚣嫒荻喾N傳輸方式 ,并可采用多種傳輸方式。 松散耦合和文檔驅動的Web服務對于SOA服務接口來講是一個重要的標準。
當客戶調用消息類Web服務時,客戶通常會發送的是一個完整的文檔(如采購訂單),而非一組離散的參數。Web服務接收整個文檔、進行處理、而后可能或者不會返回結果信息。由于客戶和Web服務間不存在緊密耦合請求響應,消息類Web服務在客戶和服務器間提供了更為松散的耦合。
⑤? 可重用的服務
如果完全按照可重用的原則設計服務,SOA將可以使應用變得更為靈活??芍赜梅詹捎猛ㄓ酶袷教峁┲匾臉I務功能,為開發人員節約了大量時間。設計可重用服務是與數據庫設計或通用數據建模類似的最有價值的工作。由于服務設計是成功的關鍵因此,因此SOA實施者應當尋找一種適當的方法進行服務設計過程管理。
服務設計管理根本上講是服務設計問題,服務設計需要在兩點間折衷 。 走捷徑的項目戰術與企業構建可重用通用服務的長期目標。
超越項目短期目標進行服務接口的開發和評估是邁向精確定義服務接口的重要一步,同時還需要為接口文檔、服務實現文檔及所有重要的非功能性特征設立標準。
在大型組織中實現重用的一個先決條件是建立通用(設計階段)服務庫和開發流程,以保證重用的正確性和通用性。此外,對記述服務設計和開發的服務文檔進行評估也是成功利用服務庫的關鍵。
簡言之,不按規則編寫服務將無法保證可提供重用性的SOA的成功實施。在執行規則的過程中會產生財務費用,需要在制定SOA實施計劃時加以考慮。
⑥? 服務接口設計管理
Web服務使應用功能得以通過標準化接口(WSDL)提供,并可基于標準化傳輸方式(HTTP和JMS)、采用標準化協議(SOAP)進行調用。 而 采用Web服務或XML來創建SOA應用, 這會使其具有更好的通用性。
⑦? 標準化的服務接口
SOA中可能存在以下消息模式。在一個SOA實現中,常會出現混合采用不同消息模式的服務。
﹡無狀態的消息。使用者向提供者發送的每條消息都必須包含提供者處理該消息所需的全部信息。這一限定使服務提供者無須存儲使用者的狀態信息,從而更易擴展。
﹡有狀態的消息。使用者與提供者共享使用者的特定環境信息,此信息包含在提供者和使用者交換的消息中。這一限定使提供者與使用者間的通信更加靈活,但由于服務提供者必須存儲每個使用者的共享環境信息,因此其整體可擴展性明顯減弱。該限定增強了服務提供者和使用者的耦合關系,提高了交換服務提供者的服務難度。
﹡等冪消息。向軟件代理發送多次重復消息的效果和發送單條消息相同。這一限定使提供者和消費者能夠在出現故障時簡單的復制消息,從而改進服務可靠性。
⑧? 支持各種消息模式
服務是由提供者和使用者間的契約定義的。契約規定了服務使用方法及使用者期望的最終結果。此外,還可以在其中規定服務質量。此處需要注意的關鍵點是,服務契約必須進行精確定義。
三、可以使用SOA做什么?
對 SOA 的需要來源于需要使業務IT系統變得更加靈活,以適應業務中的改變。通過允許強定義的關系和依然靈活的特定實現,IT系統既可以利用現有系統的功能,又可以準備在以后做一些改變來滿足它們之間交互的需要。
下面舉一個具體的例子。一個服裝零售組織擁有500家國際連鎖店,它們常常需要更改設計來趕上時尚的潮流。這可能意味著不僅需要更改樣式和顏色,甚至還可能需要更換布料、制造商和可交付的產品。如果零售商和制造商之間的系統不兼容,那么從一個供應商到另一個供應商的更換可能就是一個非常復雜的軟件流程。通過利用WSDL接口在操作方面的靈活性,每個公司都可以將它們的現有系統保持現狀,而僅僅匹配WSDL接口并制訂新的服務級協定,這樣就不必完全重構它們的軟件系統了。這是業務的水平改變,也就是說,它們改變的是合作伙伴,而所有的業務操作基本上都保持不變。這里,業務接口可以作少許改變,而內部操作卻不需要改變,之所以這樣做,僅僅是為了能夠與外部合作伙伴一起工作。
另一種形式是內部改變,在這種改變中,零售組織現在決定它還將把連鎖零售商店內的一些地方出租給專賣流行衣服的小商店,這可以看作是采用店中店( store-in-store )的業務模型。這里,雖然公司的大多數業務操作都保持不變,但是它們現在需要新的內部軟件來處理這樣的出租安排。盡管在內部軟件系統可以承受全面的檢修,但是它們需要在這樣做的同時不會對與現有的供應商系統的交互產生大的影響。在這種情況下,SOA 模型保持原封不動,而內部實現卻發生了變化。雖然可以將新的方面添加到 SOA 模型中來加入新的出租安排的職責,但是正常的零售管理系統繼續如往常一樣。
為了延續內部改變的觀念,IT經理可能會發現,軟件的新配置還可以以另外的一種方式加以使用,比如出租粘貼海報的地方以供廣告之用。這里,新的業務提議是通過在新的設計中重用靈活的SOA模型得出的。這是來自SOA? 模型的新成果,并且還是一個新的機會,而這樣的新機會在以前可能是不會有的。
垂直改變也是可能的,在這種改變中,零售商從銷售他們自己的服裝完全轉變到專門通過店中店模型出租地方。如果垂直改變完全從最底層開始的話,就會帶來SOA模型結構的顯著改變,與之一起改變的還可能有新的系統、軟件、流程以及關系。在這種情況下,SOA模型的好處是它從業務操作和流程的角度考慮問題而不是從應用程序和程序的角度考慮問題,這使得業務管理可以根據業務的操作清楚地確定什么需要添加、修改或刪除。然后可以將軟件系統構造為適合業務處理的方式,而不是在許多現有的軟件平臺上常??吹降钠渌绞?。
在這里,改變和 SOA系統適應改變的能力是最重要的部分。對于開發人員來說,這樣的改變無論是在他們工作的范圍之內還是在他們工作的范圍之外都有可能發生,這取決于是否有改變需要知道接口是如何定義的以及它們相互之間如何進行交互。與開發人員不同的是,架構師的作用就是引起對SOA模型大的改變。這種分工,就是讓開發人員集中精力于創建作為服務定義的功能單元,而讓架構師和建模人員集中精力于如何將這些單元適當地組織在一起,它已經有十多年的歷史了,通常用統一建模語言(Universal Modeling Language ,UML),并且描述成模型驅動的體系結構(Model-Driven Architecture,MDA)。
對于面向同步和異步應用的,基于請求/響應模式的分布式計算來說, SOA 是一場革命。一個應用程序的業務邏輯( business logic )或某些單獨的功能被模塊化并作為服務呈現給消費者或客戶端。這些服務的關鍵是他們的松耦合特性。例如,服務的接口和實現相獨立。應用開發人員或者系統集成者可以通過組合一個或多個服務來構建應用,而無須理解服務的底層實現。舉例來說,一個服務可以用。NET 或 J2EE來實現,而使用該服務的應用程序可以在不同的平臺之上,使用的語言也可以不同。
四、SOA架構的目的和意義
軟件產品設計成SOA架構及目的或者現實的意義是:保全或保護企業原來遺留下來的軟件系統(數據),實現軟件數據的無縫接軌,避免企業原有投資打水漂、數據需重復錄入。由此,可以縮短軟件產品的實施推廣期??梢栽趯嵤┩茝V期間,快速調整以最大程度的滿足客戶的需求。在客戶應用業務發生改變,必須進行新的投入、改造時,產品可以進行新的快速擴展或直接第三方設備(軟、硬件)兼容。從而避免產品本身的僵化,成為使用者的遺留系統。SOA架構可以看作是B/S模型、XML/Web Service技術之后的自然延伸。 它 將能夠幫助我們站在一個新的高度理解企業級架構中的各種組件的開發、部署形式,它將幫助企業系統架構者以更迅速、更可靠、更具重用性架構整個業務系統。較之以往,以SOA 架構的系統能夠更加從容地面對業務的急劇變化,具有更強的適應性。
轉載于:https://www.cnblogs.com/qilin20/p/10964288.html
總結
- 上一篇: bzoj4316: 小C的独立集
- 下一篇: 数据段、代码段、堆栈段、BSS段的区别