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):定義了一個框架,框架描述了消息中的內容是什麼,包括消息的內容、發送者、接收者、處理者以及如何處理消息。spa

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

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

(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

相關文章
相關標籤/搜索