SOAP協議


1.SOAP與HTTP的區別

HTTP只負責把數據傳送過去,不會管這個數據是XML、HTML、圖片、文本文件或者別的什么。( HTTP就是郵局的協議,他們規定了你的信封要怎么寫,要貼多少郵票等。。。。 )

而SOAP協議則定義了怎么把一個對象變成XML文本,在遠程如何調用等   (SOAP就是你們之間交流的協議,負責把你所需要表達的意思寫在信紙上,同時也負責讓對方能夠看得懂你的信。)

2.概念

SOAP(Simple Object Accrss Protocol,簡單對象訪問協議)是一種簡單的基於XML的協議,可以使應用程序在分散或分布式的環境中,多數通過HTTP來傳輸信息的。(soap的默認端口號8880,ftp的代理服務器的默認端口號是21)

SOAP是Web Service的通信協議,是基於XML語言和XSD標准,其定義了一套編碼規則,編碼規則定義如何將數據表示為消息,以及怎樣通過HTTP協議來傳輸SOAP消息,由四部分組成:

(1) SOAP信封(Envelope):定義了一個框架,框架描述了消息中的內容是什么,包括消息的內容、發送者、接收者、處理者以及如何處理消息。

(2)SOAP編碼規則:定義了一種系列化機制,用於交換應用程序所定義的數據類型的實例。

(3) SOAP RPC表示:定義了用於表示遠程過程調用和應答協定。

(4)SOAP綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP信封的約定。

SOAP消息基本上是從發送端到接收端的單向傳輸,常常結合起來執行類似於請求/應答的模式。

3.特性

a.SOAP是一種輕量級通信協議

b.SOAP用於應用程序之間的通信

c.使用SOAP的應用使用HTTP協議通信

d.SOAP獨立於平台

e.SOAP獨立於編程語言

f.SOAP基於XML

g.SOAP很簡單並可擴展

h.SOAP允許繞過防火牆

4.消息交換模型

1)、SOAP結點

     SOAP結點表示SOAP消息路徑的邏輯實體,用於進行消息路由或處理。SOAP結點可以是SOAP消息的發送者、接收方、消息中介。

    在SOAP消息模型中,中間方為一種SOAP結點,負責提供發送消息的應用程序和接收方間的消息交換和協議路由功能。中間方結點駐留在發送結點和接收結點之間,負責處理SOAP消息頭中定義的部分消息。SOAP發送方和接收方之間可以有0個或多個SOAP中間方,為SOAP接收方提供分布式處理機制。

 

 

2).一般,SOAP消息中間方分為兩種:

A、轉發中間方:轉發中間方通過在所轉發消息的SOAP消息頭塊中描述和構造語義和規則,從而實現消息處理。

B、活動中間方:活動中間方利用一組功能為接收方結點修改外部綁定消息,從而提供更多的消息處理操作。

5.協議解析

1)、SOAP 消息組成(soap的消息對象包括:)

所有的SOAP消息都使用XML編碼,一條SOAP消息就是一個普通的XML文檔,文檔包括下列元素:

A、Envelope(信封)元素,必選,可把此XML文檔標識為一條SOAP消息。

B、Header(報頭)元素,可選,包含頭部信息(包含了使消息在到達最終目的地之前,能夠被路由到一個或多個中間節點的信息,可能會定義認證信息、事務信息、本地信息)。

C、Body(主體)元素,必選,包含所有的調用和響應信息。

D、Fault元素,位於Body內,可選,提供有關處理此消息所發生錯誤的信息。

E、Attachment(附件)元素,可選,可通過添加一個或多個附件擴展SOAP消息。

所有以上的元素均被聲明於針對SOAP封裝的默認命名空間中:http://www.w3.org/2001/12/soap-envelope

以及針對 SOAP 編碼和數據類型的默認命名空間:http://www.w3.org/2001/12/soap-encoding

 6.附件

SOAP消息可以包含XML格式的主SOAP信封,以及包含ASCII或二進制等任何數據格式的SOAP附件。如果SOAP消息包含附件,那么SOAP消息將是一個MIME編碼的消息,包含SOAP內容和一個或多個其他類型的附件。因此SOAP消息實際上分為以下兩種類型:

A、僅包含XML內容的消息

B、MIME編碼的消息,包含初始的XML有效內容以及任何數量的附件。附件可以是任何其他類型的數據。

【MIME:Multi-purpose Internet Mail Extensions多用途Internet郵件擴展,是一組技術規范,其目的是使用不同字符集來傳遞文本,也可以在計算機之間傳遞各種各樣的多媒體數據】

 7.消息綁定

Web服務的有效負載通常包裝在SOAP消息中,而SOAP消息結構由WSDL文檔中的SOAP綁定定義確定。不同的調用方式和編碼方式通過組合可以產生多種綁定樣式,而每種樣式的應用場景和對應的SOAP消息結構並不相同。如果沒有正確的構造SOAP消息,則無法正確交換服務的有效負載。

SOAP Body提供了一種消息交換的機制,是SOAP消息的實際負載,可包含任意內容。SOAP消息體(SOAP Body)通過綁定服務調用方式(RPC或者Document)封裝操作,綁定編碼方式(Encoded或者Literal)序列化參數。SOAP消息的綁定樣式由style、use和encodingStyle三個屬性共同設置。style屬性指定服務的調用方式,是采用RPC方式還是Document方式;use屬性指定消息的編碼方式,是采用Encoded方式還是采用Literal方式;而encodingStyle屬性指定具體編碼規則,例如可以指定SOAP編碼規則、XML Schema編碼規則等等,通常情況下都是采用XML Schema。

8.調用流程

Web service一般就是用SOAP協議通過HTTP來調用它,其實他就是一個WSDL文檔,客戶都可以閱讀WSDL文檔來用這個Web service。客戶根據WSDL描述文檔,會生成一個SOAP請求消息。Web service都是放在Web服務器 (如IIS) 后面的,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web服務器來。Web服務器再把這些請求轉發給Web service請求處理器。請求處理器的作用在於,解析收到的SOAP請求,調用Web service,然后再生成相應的SOAP應答。Web服務器得到SOAP應答后,會再通過HTTP應答的方式把它送回到客戶端。

SOAP簡單的理解,就是這樣的一個開放協議SOAP=RPC+HTTP+XML:采用HTTP作為底層通訊協議;RPC作為遠程調用途徑,XML作為數據傳送的格式,允許服務提供者和服務客戶經過防火牆在INTERNET進行通訊交互。

原文鏈接:https://blog.csdn.net/sx1119183530/article/details/79942641


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM