標籤:SOAP

SOAP

  1. SOAP以XML為基礎,因此它與程式語研、平台和硬體無關
  2. SOAP屬於第二代的XML協定
  3. XML-RPC使用HTTP做為底層的傳輸協定

SOAP應該做些什麼

  1. SOAP是普遍的XML分散式計算基礎建設的規格;XML代表第二代XML協定,SOAP立基於XML1.0,XML DTD與XML namespace
  2. SOAP的目標在於低階分散式系統的開發者,而不是應用程式、商業邏輯的開發者,在加入瞭解SOAP的Web Service引擎後即可使用SOAP

實際上,SOAP是什麼

  1. 定義通訊單元的機制。在SOAP中,所有資訊被包裹在一個定義清楚的SOAP訊息之內。這是由SOAP封包封入其他所有訊息所完成。一個訊息可具有一個主體,基本上其內容為所有可能的XML。它同時可以有任意數目的標頭,內含主體之外的資訊
  2. 一個錯誤處理的機制。它可以找出錯誤的來源與原因,允許錯誤診斷資訊於參與的成員間交換。這一點是利用SOAP fault來達成
  3. 一個延展性機制讓改進不會變成阻礙。XML,schema和namespace在這部份十分稱職,延展的兩個關鍵需求是可以獨立於其它延展,且可以引入和始用而不透過集中式的註冊或協調。通常,擴充是經由SOAP標頭來達成,它們可用於在SOAP上建立更複雜的協定
  4. 一個使資料呈現有彈性的機制。讓已經以某種格式(純文字、XML等)序列化的資料和像程式語言的資料型態般的抽象資料結構一樣樣得以XML格式交換
  5. 一個將遠端呼叫程序(RPC)以及回傳值呈現為SOAP訊息的慣例,因為RPC是最普遍的分散式計算交互運作型態,也因為它與程序式語言結構間良好的對映關係
  6. 一個以文件為中心的方式以反應更多商業活動的自然文件交換模型。這對RPC導致太細碎和易破壞的介面是必要的支援
  7. 一個連結SOAP訊息與HTTP的機制,因為HTTP是網際網路上最普遍的通訊協定

Web Service層次

provider與requester將服務視為Java API,呼叫Web Service需要一或多個Java method invocation,實作一個Web Service需要實作一個Java後端(如:class或EJB)。而Web Service的觀點則是其中一個SOAP訊息在requester與provider間交換,這些都是邏輯上的觀點,因為這不是requester與provider通訊的方式,唯一「真實」的觀點是連線這一層的觀點,在上面內含sOAP訊息的HTTP封包在requester的應用程式和provider的Web Service間交換

SOAP信封骨架

SOAP封包可以包含一個選擇性的Header元素與一個必要的Body元素,任何數目的其它XML元素可跟在Body元素之後

SOAP標頭

  1. Header如果出現的話,必須是SOAP Envelope元素的第一個子元素
  2. SOAP訊息可以包含任何數目的標頭

SOAP中的跨媒體處理

  1. 你如何將訊息傳送給跨媒體(Intermediary)處理
  2. 你如何辨別誰該處理該訊息
  3. 由跨媒體處理的資訊會如何

SOAP的錯誤處理

發生異常時,失敗的相關訊息會出現在SOAP的Falt元素裡

SOAP的資料編碼

SOAP的編碼規則利用SOAP envelope namespace的encodingStyle屬性來達成,此屬性在SOAP Schema中預設為全域,它可以出現在任何元素中,允許不同的編碼方式混合在一個SOAP訊息裡

SOAP陣列

陣列型態必須以SOAP-ENC:Array或由此衍生的型態來呈現,這些型態都有SOAP-ENC:arrayType屬性

廣告