面向服務的體系結構是一個組件模型,它將應用程序的不一樣功能單元(稱爲服務)經過這些服務之間定義良好的接口和契約聯繫起來。接口是採用中立的方式進行定義的,它應該獨立於實現服務的硬件平臺、操做系統和編程語言。這使得構建在各類各樣的系統中的服務可使用一種統一和通用的方式進行交互。編程
SOA是一種粗粒度、鬆耦合服務架構,服務之間經過簡單、精肯定義接口進行通信,不涉及底層編程接口和通信模型。SOA能夠看做是B/S模型、XML(標準通用標記語言的子集)/Web Service技術以後的天然延伸。架構
對鬆耦合的系統的須要來源於業務應用程序須要根據業務的須要變得更加靈活,以適應不斷變化的環境,好比常常改變的政策、業務級別、業務重點、合做夥伴關係、行業地位以及其餘與業務有關的因素,這些因素甚至會影響業務的性質。咱們稱可以靈活地適應環境變化的業務爲按需(On demand)業務,在按需業務中,一旦須要,就能夠對完成或執行任務的方式進行必要的更改。編程語言
雖然面向服務的體系結構不是一個新鮮事物,但它倒是更傳統的面向對象的模型的替代模型,面向對象的模型是緊耦合的,已經存在二十多年了。雖然基於 SOA 的系統並不排除使用面向對象的設計來構建單個服務,可是其總體設計倒是面向服務的。因爲它考慮到了系統內的對象,因此雖然 SOA 是基於對象的,可是做爲一個總體,它卻不是面向對象的。不一樣之處在於接口自己。SOA 系統原型的一個典型例子是通用對象請求代理體系結構(Common Object Request Broker Architecture,CORBA),它已經出現很長時間了,其定義的概念與 SOA 類似。spa
然而, SOA 已經有所不一樣了,由於它依賴於一些更新的進展,這些進展是以可擴展標記語言(eXtensible Markup Language,XML)爲基礎的。經過使用基於XML(標準通用標記語言的子集) 的語言(稱爲 Web 服務描述語言(Web Services Definition Language,WSDL))來描述接口,服務已經轉到更動態且更靈活的接口系統中,非之前 CORBA 中的接口描述語言(Interface Definition Language,IDL)可比了操作系統
SOA 模型的好處是它從業務操做和流程的角度考慮問題而不是從應用程序和程序的角度考慮問題,這使得業務管理能夠根據業務的操做清楚地肯定什麼須要添加、修改或刪除。而後能夠將軟件系統構造爲適合業務處理的方式,而不是在許多現有的軟件平臺上經常看到的其餘方式。設計