歡迎訪問新悅網(wǎng)絡(luò)設(shè)備有限公司
什么是 SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)?
SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)是一種消息協(xié)議,使應(yīng)用程序的分布式元素能夠進(jìn)行通信。SOAP 可以承載多種標(biāo)準(zhǔn)協(xié)議,包括與 Web 相關(guān)的超文本傳輸??協(xié)議 ( HTTP )。
SOAP 是作為具有不同編程語(yǔ)言的應(yīng)用程序的中間語(yǔ)言而開發(fā)的,使這些應(yīng)用程序能夠通過 Internet 相互通信。SOAP 靈活且獨(dú)立,這使得開發(fā)人員能夠用不同的語(yǔ)言編寫 SOAP 應(yīng)用程序編程接口 ( API ),同時(shí)添加特性和功能。
SOAP 是一種輕量級(jí)協(xié)議,用于創(chuàng)建 Web API,通常使用可擴(kuò)展標(biāo)記語(yǔ)言 ( XML )。它支持多種互聯(lián)網(wǎng)通信協(xié)議、HTTP、簡(jiǎn)單郵件傳輸協(xié)議 (SMTP) 和傳輸控制協(xié)議。SOAP 方法定義了 SOAP 消息的處理方式、包含的功能和模塊、支持的通信協(xié)議以及 SOAP 消息的構(gòu)造。SOAP 使用 XML 信息集作為消息格式,并依賴于應(yīng)用層協(xié)議(如 HTTP)進(jìn)行消息傳輸和協(xié)商。
SOAP 構(gòu)建塊和消息結(jié)構(gòu)示例
簡(jiǎn)單對(duì)象訪問協(xié)議作為一種規(guī)范,定義了發(fā)送到 Web 服務(wù)和客戶端應(yīng)用程序的 SOAP 消息。SOAP 消息是由以下三個(gè)基本構(gòu)建塊組成的 XML 文檔:
- SOAP信封將所有數(shù)據(jù)封裝在消息中,并將 XML 文檔標(biāo)識(shí)為 SOAP 消息。
- Header元素包含有關(guān) SOAP 消息的附加信息。例如,該信息可以是調(diào)用應(yīng)用程序使用的身份驗(yàn)證憑證。
- Body元素包括需要從 Web 服務(wù)發(fā)送到調(diào)用應(yīng)用程序的實(shí)際消息的詳細(xì)信息。該數(shù)據(jù)包括呼叫和響應(yīng)信息。
故障消息是可選的第四個(gè)構(gòu)建塊。如果生成 SOAP 錯(cuò)誤,則會(huì)以 HTTP 500 錯(cuò)誤的形式返回。故障消息包含故障代碼、字符串、參與者和詳細(xì)信息。

SOAP 是如何工作的?
SOAP 請(qǐng)求很容易生成和處理響應(yīng)。首先,客戶端使用 XML 文檔生成服務(wù)請(qǐng)求。接下來(lái),SOAP 客戶端將 XML 文檔發(fā)送到 SOAP 服務(wù)器。當(dāng)服務(wù)器收到 SOAP 消息時(shí),它會(huì)將該消息作為服務(wù)調(diào)用發(fā)送到所請(qǐng)求的服務(wù)器端應(yīng)用程序。包含所請(qǐng)求參數(shù)、返回值和客戶端數(shù)據(jù)的響應(yīng)首先返回到 SOAP 請(qǐng)求處理程序,然后返回到發(fā)出請(qǐng)求的客戶端。SOAP 請(qǐng)求和響應(yīng)均使用安全超文本傳輸??協(xié)議 ( HTTPS ) 或類似的協(xié)議(如 HTTP)進(jìn)行傳輸。
SOAP 的優(yōu)點(diǎn)和缺點(diǎn)
SOAP 是面向服務(wù)的體系結(jié)構(gòu) ( SOA ) 和Web 服務(wù)規(guī)范的一個(gè)組成部分。
SOAP 的優(yōu)點(diǎn)包括以下幾點(diǎn):
- 獨(dú)立于平臺(tái)和操作系統(tǒng)。SOAP 可以通過多種協(xié)議承載,從而支持 Windows 和 Linux 上使用不同編程語(yǔ)言的應(yīng)用程序之間的通信。
- 適用于 HTTP 協(xié)議。盡管 SOAP 可與許多不同的協(xié)議配合使用,但 HTTP 是 Web 應(yīng)用程序使用的默認(rèn)協(xié)議。
- 可以通過不同的網(wǎng)絡(luò)和安全設(shè)備進(jìn)行傳輸。SOAP 可以輕松地穿過防火墻,而其他協(xié)議可能需要特殊的調(diào)節(jié)。
然而,其缺點(diǎn)包括以下幾點(diǎn):
- 沒有通過引用傳遞數(shù)據(jù)的規(guī)定。如果同時(shí)傳遞同一對(duì)象的多個(gè)副本,這可能會(huì)導(dǎo)致同步問題。
- 速度。SOAP的數(shù)據(jù)結(jié)構(gòu)基于XML。XML 在很大程度上是人類可讀的,這使得理解 SOAP 消息變得相當(dāng)容易。然而,與通用對(duì)象請(qǐng)求代理架構(gòu) (CORBA) 及其容納二進(jìn)制數(shù)據(jù)的遠(yuǎn)程過程調(diào)用 ( RPC ) 協(xié)議相比,這也使得消息相對(duì)較大。因此,CORBA 和 RPC 速度更快。
- 不像其他方法那么靈活。盡管 SOAP 很靈活,但較新的方法(例如 RESTful 架構(gòu))使用 XML、JavaScript 對(duì)象表示法、YAML或任何所需的解析器,這使得它們比 SOAP 更靈活。
SOAP API
SOAP 是一種幾乎總是在 Web 服務(wù)或 SOA 框架上下文中使用的協(xié)議。因此,它的 API 通常被 SOA 的更高級(jí)別接口隱藏。SOA API中間件工具可用于幾乎所有現(xiàn)代編程語(yǔ)言,并且 Microsoft 提供了各種 .NET SOAP 和 SOA 工具。
SOAP 與 REST
SOAP 旨在將傳統(tǒng)的整體應(yīng)用程序分解為多組件、分布式形式,而不會(huì)失去安全性和控制力。相比之下,表述性狀態(tài)傳輸 ( REST ) 是一種基于 HTTP 協(xié)議和 Web 服務(wù)器支持客戶端的方式的分布式計(jì)算交互模型?;?HTTP 的 REST 幾乎始終是現(xiàn)代微服務(wù)開發(fā)和通信的基礎(chǔ)。RESTful API 使用 HTTP 請(qǐng)求來(lái)獲取、放置、發(fā)布和刪除數(shù)據(jù)。
REST over HTTP 簡(jiǎn)單、靈活、輕量,除了提供一種交換信息的方式之外,幾乎沒有提供什么。SOAP 也可以依賴于 HTTP,但它連接了一組復(fù)雜的分布式計(jì)算工具的元素(Web 服務(wù)和 SOA 框架)以及應(yīng)用程序組件,這構(gòu)成了整個(gè)面向服務(wù)的框架的一部分。
簡(jiǎn)單對(duì)象訪問協(xié)議的未來(lái)
SOAP 是第一個(gè)廣泛使用的用于在面向服務(wù)的體系結(jié)構(gòu)中連接 Web 服務(wù)的協(xié)議。如今,分布式應(yīng)用程序的現(xiàn)代開發(fā)很大程度上基于 RESTful 原則。SOAP 幾乎總是局限于遺留平臺(tái)。SOAP 仍在使用的一個(gè)領(lǐng)域是處理在線事務(wù)的應(yīng)用程序,因?yàn)樗且环N更加嚴(yán)格且由協(xié)議驅(qū)動(dòng)的 API 風(fēng)格。
- 07-21
- 07-21
- 07-14
- 07-14
- 07-07
- 07-07
- 06-23
- 06-23
最新內(nèi)容
- 04-14
- 02-17
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
知識(shí)庫(kù)
