[WCF編程]2.SOA概述

1、SOA簡介
1. SOA(面向服務架構)既是一種編程方式,也是軟件開發的一種架構方法。根據這種架構方法,應用程序是由具備必定行爲(稱爲服務)的功能單元組成的。
2. SOA的基本思想是構建一個粗粒度、鬆散耦合的系統,在這個系統中,服務的使用者與服務的實現惟一共同擁有的東西,就是公開的服務操做和參數的結構定義。
3. 客戶端只知道用來描述服務方法的名稱、輸入參數類型及返回值類型。
4. SOA架構的技術基礎是SOAP標準。SOAP用XML語言來定義一個服務操做所發送和接收消息的內容。該消息是由參數的值或者返回的值造成的,並且這些數據須要轉換爲SOAP格式。
2、SOA架構的4條原則
1. 邊界顯式定義
    只能經過調用契約才能執行服務中的邏輯。邊界是指服務的公共接口與其內部專用實現之間的界線,邊界必須顯式定義,是指客戶端程序只須要知道服務存在的方法,經過契約調用這些方法便可。
2. 服務是自治的
    服務是不依賴於其它服務行爲的獨立程序模塊。服務必須通過部署,並且每一個服務 的版本相互獨立。
3. 服務共享的是模式和契約,而不是類
    模式是對服務操做的定義,它以一種獨立於平臺的方式來描述簽名:方法的名稱、參數類型和返回值類型。契約是服務的元數據,是服務做爲黑盒子的對外接口,模式是對參數結構的定義。
4. 服務的兼容性是基於策略的
    這條原則意味着由服務決定在知足什麼條件時才處理消息。爲了經過協商肯定通訊中的元素,如消息的格式,安全性等要求,必須使用策略。策略用來進一步明確服務的語義和客戶端對服務行爲的指望。
3、服務的內部結構
1.  服務的工做原理
    
    一個服務包含若干個方法,這些方法經過一個通道與服務的使用者創建通訊。服務的使用者也使用一個與服務通道相匹配的通道實際的調用服務的方法,向服務發送所須要的數據。一方面,通道是模式、契約和策略的結合;另外一方面,通道在運行時就是使用的協議。消息能夠在通道中雙向傳遞。通道老是與某一個協議捆綁在一塊兒,定義對服務的訪問方式和訪問過程。協議(如HTTP或MSMQ)用來傳送數據,但須要獲得服務實現時所在操做系統的支持(如MSMQ)。通道至關於一個管道,消息在其中流動。客戶端把消息放在通道的一端,發佈服務的平臺所在的宿主棧在另外一端讀取消息。通道將被綁定由契約定義的模式上。在模式和契約中,若是沒有對服務操做的元數據定義,那麼通道是不完整的。通道還須要知道服務使用者必須實現的策略。
2.  服務的生態系統
1. 應用程序由服務組成
    這個生態系統的核心是服務,服務是組成模塊,由它們構建應用程序。
2. 服務的管理狀態
    服務的任務和操做常常把數據持久化的保存在數據庫中,以後再從數據庫中讀取數據。
3. 服務實施策略
    服務有權指定和服務邏輯用法有關的策略。策略描述了服務使用者行爲模式的先決條件。能夠把策略看成在客戶端與服務端通訊以前必須達成的協議。絕大多數,它是關於安全的協議。
4. 策略實施操做要求
    經過定義策略,服務能夠實施調用平臺的操做要求。
5. 服務是由契約綁定的
    只有當描述服務操做簽名的契約存在時,服務才存在。這個契約是客戶與服務之間達成的約定。契約必須顯式定義,而且在運行時要綁定到服務。創建客戶端的代理類時,須要這個契約。
6. 契約描述了消息交換模式
    消息交換模式是對消息從一方到另外一方傳送過程和傳送方法的定義。消息交換模式肯定了同步仍是異步調用服務,決定了是否須要返回結果。消息交換模式能夠是:
    請求—響應模式:這是最經常使用的模式,每一個調用都直接返回另外一個消息。
    單向模式:服務調用沒有返回結果,這種消息能夠是異步調用的。
    雙向模式:在調用方法的過程當中那個,服務操做能夠回調給客戶端,服務操做在返回最終結果以前,能夠向客戶端程序請求更多的信息。
    消息交換模式在功能層是可見的,所以開發人員能夠實現服務操做。在協議更深的技術層,消息交換模式雖然也存在,但大多數狀況下是不可見的。
7. 契約包含模式,而模式定義消息的結構
    模式定義了所操做參數的結構。模式採用XSD文檔格式來描述參數。XSD是元數據語言,用來描述傳入服務操做的參數和服務操做返回的結果。
8. 服務交換模式是一個消息集
    消息的組合和調用順序能夠用一個更加複雜的交換模式來描述。這樣依賴,消息交換模式就能夠定義哪一個操做必須先調用,哪一個操做必須最後調用,以及決定是否認義操做的一個完整工做流。
9. 服務交換消息
    交換消息是服務生態系統的最重要組成部分。交換消息意味着調用一個操做和接受來自此操做的響應。
 
參考書籍:《WCF4高級編程》
相關文章
相關標籤/搜索