SOAP 的服務(wù)發(fā)現(xiàn)用的是 UDDI(Universal Description, Discovery, Integration) 統(tǒng)一描述發(fā)現(xiàn)集成,相當(dāng)于一個注冊中心,服務(wù)提供方將 WSDL 文件發(fā)布到注冊中心,使用方可以到這個注冊中心查找。
UDDI 具有兩項功能:
UDDI 包括用于 SOAP 消息的 XML 模式(它定義一組文檔來描述企業(yè)和服務(wù)信息)、用于查詢信息和將信息發(fā)布到目錄中的一組公共 API 以及用于在同級 UDDI 節(jié)點之間復(fù)制目錄條目的 API。
UDDI依賴于企業(yè)的分布式注冊表及其服務(wù)描述,以通用XML格式實現(xiàn),以管理和實現(xiàn)Web服務(wù)的發(fā)現(xiàn)。Web服務(wù)提供商在UDDI注冊表上宣傳他們的服務(wù),該注冊表管理有關(guān)提供商、服務(wù)實現(xiàn)和服務(wù)元數(shù)據(jù)的所有信息。在注冊表上組織和編目Web服務(wù)允許在企業(yè)內(nèi)部或與外部合作伙伴共享和重用。今天,這些注冊表基于UDDI 3.0規(guī)范。
UDDI注冊表為提供商、服務(wù)和綁定的三個主節(jié)點的中央存儲庫。有兩種類型的注冊機(jī)構(gòu)可供選擇:私人和公共。私人注冊表允許企業(yè)在安全的私人環(huán)境中發(fā)布和測試其內(nèi)部網(wǎng)絡(luò)應(yīng)用程序。公共注冊表由包含企業(yè)及其網(wǎng)絡(luò)服務(wù)信息的同行目錄組成。私人和公共注冊機(jī)構(gòu)都符合相同的規(guī)范。
要構(gòu)建應(yīng)用程序,可以使用許多不同的編程語言、架構(gòu)和平臺。在這些不同的技術(shù)之間共享數(shù)據(jù)是一項挑戰(zhàn),因為這些技術(shù)具有不同的數(shù)據(jù)格式。SOAP 和 REST 的出現(xiàn)都是為了解決這個問題。
您可以使用 SOAP 和 REST 在不同的應(yīng)用程序之間構(gòu)建 API 或通信點。Web 服務(wù)和 API 這兩個術(shù)語可以互換使用。但是,API 是更廣泛的類別。Web 服務(wù)是一種特殊類型的 API。
以下是 SOAP 和 REST 之間的其他相似之處:
您可以使用 SOAP 或 REST 來構(gòu)建安全、可擴(kuò)展且容錯的分布式系統(tǒng)。
許多傳統(tǒng)系統(tǒng)可能仍會遵循 SOAP 準(zhǔn)則,而在基于 Web 的場景中,REST 常常被視為一種后來居上的替代方法。REST 是一組可靈活實施的準(zhǔn)則,而 SOAP 則是具有特定要求(例如 XML 消息傳遞)的協(xié)議。
REST API 屬于輕量級 API,因此非常適合較新的環(huán)境,例如物聯(lián)網(wǎng)(IoT)、移動應(yīng)用開發(fā)和無服務(wù)器計算,大部分公共 API(例如 冪簡API Hub上的所有API)都遵循 REST 準(zhǔn)則。SOAP Web 服務(wù)可提供符合許多企業(yè)需求的內(nèi)置安全性和事務(wù)合規(guī)性,但同時也會讓它們變得結(jié)構(gòu)繁重,因此更適用于企業(yè)內(nèi)部復(fù)雜系統(tǒng)集成。
從技術(shù)棧角度進(jìn)行比較:
SOAP | REST | |
---|---|---|
代表 | 簡單對象訪問協(xié)議 | 表述狀態(tài)轉(zhuǎn)移 |
它是什么? | SOAP 是應(yīng)用程序之間通信的協(xié)議 | REST 是一種用于設(shè)計通信接口的架構(gòu)風(fēng)格。 |
設(shè)計 | SOAP API 會公開操作。 | REST API 會公開數(shù)據(jù)。 |
傳輸協(xié)議 | SOAP 是獨立的,可以與任何傳輸協(xié)議一起使用。 | REST 只能通過 HTTPS 使用。 |
數(shù)據(jù)格式 | SOAP 僅支持 XML 數(shù)據(jù)交換。 | REST 支持 XML、JSON、純文本、HTML。 |
性能 | SOAP 消息較大,這會使通信變慢。 | 由于較小的消息和緩存支持,REST 具有更快的性能。 |
可擴(kuò)展性 | SOAP 很難擴(kuò)展。服務(wù)器通過存儲先前與客戶端交換的所有消息來維持狀態(tài)。 | REST 易于擴(kuò)展。它是無狀態(tài)的,因此每條消息都獨立于之前的消息進(jìn)行處理。 |
安全性 | SOAP 支持加密,但需要額外開銷。 | REST 支持加密而不影響性能。 |
使用案例 | SOAP 在遺留應(yīng)用程序和私有 API 中非常有用。 | REST 在現(xiàn)代應(yīng)用程序和公有 API 中非常有用。 |
如何理解SOA,SOAP,RPC, REST 協(xié)議及其之間的關(guān)系
SOAP 與 REST 之間有何區(qū)別?
了解SOAP、WSDL和UDDI基本概念
WSDL規(guī)范解讀
WSDL使用解讀
簡單入門案例
UUDI教程