SOA結構中,它將分布在網絡中的軟件資源看作是各種服務,而這些服務是從業務需求開始的,而非始于技術。因此,SOA擺脫了面向技術的解決方案,而朝著商業服務的方向發展。與其它架構方法相比,SOA讓IT變得更有彈性,能夠更快地響應業務需求,從而實現更好的業務靈活性,使得系統能夠對變化快速和有效地做出響應,并且利用變化來獲得競爭優勢。而這種靈活性的架構,意味著它不僅能夠確保當前業務的靈活性,而且可以滿足系統未來的業務需求。增加一種服務將是比較容易的。
在SOA中,不同的應用也能夠交換數據,而并不需要考慮每個應用是用什么編程語言開發的或在什么操作系統下運行。在這種模式下,一個應用軟件或一個應用軟件的一部分是一種服務,其它應用和客戶可以在無需編寫大量代碼的情況下使用這些服務。 就像堆積木一樣,在SOA中一個個服務組件都變成了標準的“建材”,可按照需要創造出各式各樣的組合。然而,并非所有的組件都必須重新鑄模成一塊塊積木。我們可以用一層凹凸圓柱體表皮包在過去使用的“磚塊”和“瓦片”外,讓它們能和其它的積木連接,而其它的積木很可能也是用這種方式提供出來的,用戶無須擔心它骨子里到底是什么,重點在于服務組件的接口。
SOA的強大和靈活性將給企業帶來巨大的好處。如果某組織將其IT架構抽象出來,將其功能以粗粒度的服務形式表示出來,每種服務都清晰地表示其業務價值,那么,這些服務的顧客(可能在公司內部,也可能是公司的某個業務伙伴)就可以得到這些服務,而不必考慮其后臺實現的具體技術。更進一步,如果顧客能夠發現并綁定可用的服務,那么在這些服務背后的IT系統能夠提供更大的靈活性。
SOA是一種企業架構,因此,它是從企業的需求開始的。但是,SOA和其它企業架構方法的不同之處在于SOA提供的業務敏捷性。業務敏捷性是指企業對變更快速和有效地進行響應、并且利用變更來得到競爭優勢的能力。對架構設計師來說,創建一個業務敏捷的架構意味著創建一個可以滿足當前還未知的業務需求。
另外,SOA還在以下幾個方面的特點:
業務驅動服務,服務驅動技術
從本質上說,在抽象層次上,服務位于業務和技術中間。面向服務的架構設計師一方面必須理解在業務需求和可以提供的服務之間的動態關系,另一方面,同樣要理解服務與提供這些服務的底層技術之間的關系。
業務敏捷是基本的業務需求
SOA考慮的是下一個抽象層次:提供響應變化需求的能力是新的“元需求”,而不是處理一些業務上的固定不變的需求。從硬件系統而上的整個架構都必須滿足業務敏捷的需求,因為,在SOA中任何的瓶頸都會影響到整個IT環境的靈活性。
一個成功的SOA總在變化之中
SOA工作的場景,更象是一個活的生物體,而不是象傳統所說的“蓋一棟房子”。IT環境唯一不變的就是變化,因此面向服務架構設計師的工作永遠不會結束。對于習慣于蓋房子的設計師來說,要轉向設計一個活的生物體要求嶄新的思維方式。如下文所寫的,SOA的基礎還是一些類似的架構準則。