軟件架構---SOA

傳統的架構,軟件包是被編寫爲獨立的(self-contained)軟件,即在一個完整的軟件包中將許多應用程序功能整合在一塊兒。實現整合應用程序功能的代碼一般與功能自己的代碼混合在一塊兒。web

咱們將這種方式稱做軟件設計「單一應用程序「。與此密切相關的是,更改一部分代碼將對使用該代碼的代碼具備重大影響,這會形成系統的複雜性,並增長維護系統的成本。並且還使從新使用應用程序功能變得較困難,由於這些功能不是爲了從新使用而打的包。安全

缺點:代碼冗餘 不能重用 緊耦合 成本高架構

因而引出了SOA的概念分佈式

服務導向架構(service-oriented architecture,縮寫 SOA)測試

 

首先Martin Fowler提出SOA歧義Service Oriented Ambiguity,認爲"什麼是SOA"是不可能回答,由於不一樣的人意味着不一樣的事情,SOA意味服務接口,意味流程整合,意味資源再利用,意味着管制,在下面SOA組件圖中,服務和服務消費者(客戶端)之間存在多個約束,當一個服務顯式暴露後,客戶端可以經過綁定定位到該服務,至關於二者簽定了合同,規定了合同內容和如何實施,具體合同的描述是經過消息方式進行:ui

 

服務的提出其實隱含了兩個概念,服務提供者和服務消費者,這二者之間有一個合同約定,這很是相似咱們現實生活中籤定的服務合同,A單位和B單位分別是服務的提供者和消費者,二者簽定了一個服務合同,規定A爲B提供某項服務。服務就是提供一些公共需求的設施,經過一個工做過程能提供幫助,使用,讓使用者受益。設計

服務具體有以下:Windows Service:如PC定位者RPC Locator, 事件日誌EventLog, DHCP Client,;. 軟件服務Software Service,如分佈式服務Distribution Service, 警告服務Alert Service 安全服務 Security Service, 日誌服務;業務服務Business Service,如 賬號和客戶服務,銷售服務,訂單服務,採購服務。日誌

服務兩個重要特色:自治和管制,自治表明服務不能被外部勢力牽制,好比若是一個服務內部處理中須要調用外部資源或等待外部流程結束,這種等待不能影響服務自己的調用,若是一個服務分爲顯式對外和隱式內部兩個部分,那麼自治是針對隱式內部,意味着咱們不能在具體一個服務中直接使用同步代碼實現複雜功能。對象


SOA架構中有三種角色:
服務提供者:發佈本身的服務,而且對服務請求進行響應。
服務註冊中心:註冊已經發布的web service,對其進行分類,並提供搜索服務。
服務請求者:利用服務中心查找所須要的服務,而後使用該服務。
SOA的三種操做:
發佈操做:爲了使服務可訪問,須要發佈服務描述以使服務使用者能夠發現它。
查找操做:服務請求者定位服務,方法是查詢服務註冊中心來找到知足其標準的服務。
綁定操做:在檢索到服務描述以後,服務使用者繼續根據服務描述中的信息來調用服務。blog

SOA的相關標準——WSDL、UUDI、SOAP
SOAP: 簡單對象訪問協議 (Simple Object Access Protocol)
WSDL: Web服務描述語言 WSDL (Web Services Description Language)
UUDI: 統一描述、發現和集成 (Universal Description, Discovery and Integration)
WSDL用來描述服務;UDDI用來註冊和查找服務;而SOAP,做爲傳輸層,用來在消費者和服務提供者之間傳送消息。一個消費者能夠在UDDI註冊表(registry)查找服務,取得服務的WSDL描述,而後經過SOAP來調用服務。


優勢:

  1. 鬆耦合:因爲服務自治,有必定封裝邊界,服務調用交互是經過發佈接口。這意味着應用程序不感興趣的服務如何被實現。  2.位置透明:服務的消費者沒必要關係服務位於什麼地方。  3.可在異構平臺間複用。能夠將遺留系統包裝成服務。  4.便於測試,能並行開發,較高可靠性和良好可伸縮性。

相關文章
相關標籤/搜索