面向服務的架構(SOA)是一個組件模型,它將應用程序的不一樣功能單元(稱爲服務)進行拆分,並經過這些服務之間定義良好的接口和契約聯繫起來。接口是採用中立的方式進行定義的,它應該獨立於實現服務的硬件平臺、操做系統和編程語言。這使得構建在各類各樣的系統中的服務能夠以一種統一和通用的方式進行交互。編程
傳通通的兩種企業構架:面向功能的企業構架和麪向過程的企業構架,這兩種企業架構所採用的技術基本上是緊密耦合的,這種架構方法將應用程序功能的代碼一般與功能自己的代碼混合在一塊兒,帶來的後果就是更改一部分代碼的時候將對使用該代碼的代碼具備重大影響,形成系統的複雜性提升,並增長維護系統的成本,並且還使從新使用應用程序功能變得較困難,這嚴重影響了企業系統的穩定性。而SOA架構以其高度開放型和可重用性、靈活性徹底避免了傳統企業架構方法所帶來的問題。服務器
SOA的特徵是:獨立的功能實體。SOA很是強調架構中提供服務的功能實體的徹底獨立自主的能力,以及實體自我管理和恢復能力。常見的用來進行自我恢復的技術,好比事務處理,消息隊列,冗餘部署和集羣系統在SOA中都起到相當重要的做用。大數據量低頻率訪問。對於傳統的分佈式計算模型而言,他們的服務提供都是經過函數調用的方式進行的,一個功能的完成每每須要經過客戶端和服務器來回不少次函數調用才能完成,這些調用在Internet環境下每每是決定整個系統是否能正常工做的一個關鍵決定因素。所以SOA系統推薦採用大數據量的方式一次性進行信息交換。基於文本的消息傳遞。SOA系統採用基於文本而非二進制的消息傳遞方式。在Internet環境下,不一樣語言,不一樣平臺對數據、甚至是一些基本數據類型定義不一樣,給不一樣的服務之間傳遞對象帶來的很大困難。因爲基於文本的消息自己是不包含任何處理邏輯和數據類型的,所以服務間只傳遞文本,對數據的處理依賴於接收端。數據處理端能夠只選擇性的處理本身理解的那部分數據,而忽略其它的數據,從而獲得的很是理想的兼容性。架構
一個使用SOA的企業,可使用一組現有的應用來建立一個供應鏈複合應用,這些現有的應用經過標準接口來提供功能。爲了實現SOA,企業須要一個服務架構,圖2顯示了一個例子:編程語言
服務消費者能夠經過發送消息來調用服務。這些消息由一個服務總線轉換後發送給適當的服務實現。這種服務架構能夠提供一個業務規則引擎,該引擎允許業務規則被合併在一個服務裏或多個服務裏。這種架構也提供了一個服務管理基礎,用來管理服務,相似審覈,列表,日誌等功能。此外,該架構給企業提供了靈活的業務流程,更好地處理控制請求,例如SOX,而且能夠在不影響其餘服務的狀況下更改某項服務。分佈式
SOA目標是整合業務過程,必須具有下面要求:異構性,橫跨現有應用系統;可伸縮性,根據環境變化很是容易地可以提高系統性能;適用性,將應用錯誤和通信錯誤隔離開來,不至於由於一點失敗致使全局混亂;分佈式,跨部門跨地域交互操做;機動性,容許各個部門以最小的代價很容易更改與應用相關的設計和實現,也就是各個部門系統相互獨立,沒有耦合性;可見性,能夠對各類處理和服務運行狀況進行管理監視。SOA是一種鬆散耦合的軟件體系結構,在這種體系結構中,由各自獨立可複用的服務去構成系統功能。這些服務向外公佈有意義明確的接口,軟件的開發是經過對這些實現透明的接口的調用來完成。SOA能夠下降開發成本,提升系統集成度和響應速度等,還能幫助解決由於系統升級帶來的煩惱。將來SOA構架下的企業軟件就像是一個不斷進化的生態過程,某些「服務(業務組件)」不斷地局部升級,新的「服務」不斷地加入,只有這樣的系統才能真正作到實時企業,快速適應業務變化。函數
服務導向架構並非一種全新的解決方案;相反,SOA是技術與架構的天然進化。系統架構一直在不斷進步,與商業保持高度一致。系統設計師與商家很早就認識到將技術與商業流程相協調的重要性,包括充分應用併合理化技術資源,以及爲商業提供更好的支持。SOA也在必定程度上源於早已有之的企業架構理論。企業架構對技術進行評估,可是更重要的是,它關注整個企業和所有的商業流程並提供了作出技術決策的背景信息。SOA工具則融合了互聯網技術,如HTTP和XML,以及綜合技術,如消息總線、轉譯技術和鏈接技術。工具