SOAP:簡單對象訪問協議

見:https://baike.baidu.com/item/%E7%AE%80%E5%8D%95%E5%AF%B9%E8%B1%A1%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE/3841505?fr=aladdin&fromid=4684413&fromtitle=SOAP



簡單對象訪問協議

?
SOAP(簡單對象訪問協議)一般指簡單對象訪問協議
簡單對象訪問協議是交換數據的一種協議規范,是一種輕量的、簡單的、基于XML(標準通用標記語言下的一個子集)的協議,它被設計成在WEB上交換結構化的和固化的信息。
中文名
簡單對象訪問協議
外文名
Simple Object Access Protocol
中文縮寫
簡象訪協
外語縮寫
SOAP

webService三要素

SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一, soap用來描述傳遞信息的格式, WSDL 用來描述如何訪問具體的接口, uddi用來管理,分發,查詢webService 。具體實現可以搜索 Web Services簡單實例 ; SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。SOAP使用基于XML的數據結構和超文本傳輸協議(HTTP)的組合定義了一個標準的方法來使用Internet上各種不同操作環境中的分布式對象。

相關定義

  • 基于類對象的傳輸協議。
  • SOAP封裝(envelop),它定義了一個框架,描述消息中的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理它們;
  • SOAP編碼規則(encoding rules),它定義了一種序列化機制,用于表示應用程序需要使用的數據類型的實例;
  • SOAP RPC表示(RPC representation),它定了一個協定,用于表示遠程過程調用和應答;
  • SOAP綁定(binding),它定義了SOAP使用哪種協議交換信息。使用HTTP/TCP/UDP協議都可以。
把SOAP綁定到HTTP提供了同時利用SOAP的樣式和分散的靈活性的特點以及HTTP的豐富的特征庫的優點。在HTTP上傳送SOAP并不是說SOAP會覆蓋現有的HTTP語義,而是HTTP上的SOAP語義會自然的映射到HTTP語義。在使用HTTP作為協議綁定的場合中,RPC請求映射到HTTP請求上,而RPC應答映射到HTTP應答。然而,在RPC上使用SOAP并不僅限于HTTP協議綁定。

歷史

SOAP曾經代表“Simple Object Access Protocol”,但是這種縮寫已經在標準的1.2版后被廢止了。1.2版在2003年6月24日成為W3C的推薦版本。這種縮寫容易與SOA——Service-oriented architecture產生歧義,雖然它們之間存在非常大的差異。
SOAP由Dave Winer, Don Box,Bob Atkinson, Mohsen Al-Ghosein于1998年設計,當時只作為一種對象訪問協議。SOAP規范由 萬維網聯盟的 XML工作組維護。

四個部分

封裝

它定義了一個框架 , 該框架描述了消息中的內容是什么,誰應當處理它以及它是可選的還是必須的。

編碼規則

它定義了一種序列化的機制,用于交換應用程序所定義的數據類型的實例。

RPC表示

它定義了用于表示遠程過程調用和應答的協定。

綁定

定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。
SOAP消息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似于請求 / 應答的模式。所有的 SOAP消息都使用 XML 編碼。一條 SOAP消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特征庫的優點。在HTTP上傳送 SOAP 并不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 并不僅限于 HTTP 協議綁定。SOAP也可以綁定到TCP和UDP協議上。

協議結構

SOAP消息格式:
1
2
3
4
5
6
7
8
<SOAP-ENV:Envelope
 各種屬性>
<!--百度百科示例-->
 <SOAP:HEADER>
 </SOAP:HEADER>
 <SOAP:Body>
 </SOAP:Body>
</SOAP-ENV:Envelope>
主要在web服務中運用。

語法規則

構建模塊

一條 SOAP 消息就是一個普通的 XML 文檔,包含下列元素:
  • 必需的 Envelope 元素,可把此 XML 文檔標識為一條 SOAP 消息
  • 可選的 Header 元素,包含頭部信息
  • 必需的 Body 元素,包含所有的調用和響應信息
  • 可選的 Fault 元素,提供有關在處理此消息所發生錯誤的信息

語法規則

這里是一些重要的語法規則:
  • SOAP 消息必須用 XML 來編碼
  • SOAP 消息必須使用 SOAP Envelope 命名空間
  • SOAP 消息必須使用 SOAP Encoding 命名空間
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 處理指令

消息基本結構

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml
 version="1.0"?>
<soap:Envelope
 xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
<!--百度百科示例-->
</soap:Header>
<soap:Body>
<!--百度百科示例-->
<soap:Fault>
<!--百度百科示例-->
</soap:Fault>
</soap:Body>
</soap:Envelope>

核心技術

SOAP采用了已經廣泛使用的兩個協議:HTTP 和XML(標準通用標記語言下的一個子集)。HTTP用于實現 SOAP 的RPC 風格的傳輸, 而XML 是它的編碼模式。采用幾行代碼和一個XML 解析器, HTTP 服務器( MS 的 IIS 或 Apache) 立刻成為SOAP 的 ORBS。SOAP 通訊協議使用 HTTP 來發送XML 格式的信息。HTTP與RPC 的協議很相似,它簡單、 配置廣泛,并且對防火墻比其它協議更容易發揮作用。HTTP 請求一般由 Web 服務器軟件(如 IIS 和Apache)來處理, 但越來越多的應用服務器產品正在支持HTTP。XML 作為一個更好的網絡數據表達方式( NDR)。SOAP 把 XML 的使用代碼化為請求和響應參數編碼模式, 并用HTTP 作傳輸。具體地講, 一個SOAP 方法可以簡單地看作遵循SOAP編碼規則的HTTP請求和響應, 一個 SOAP終端則可以看作一個基于HTTP 的URL, 它用來識別方法調用的目標。像CORBA/ IIOP一樣, SOAP不需要具體的對象綁定到一個給定的終端, 而是由具體實現程序來決定怎樣把對象終端標識符映像到服務器端的對象。

優點

  1. 可擴展的。SOAP 無需中斷已有的應用程序, SOAP 客戶端、 服務器和協議自身都能發展。而且SOAP 能極好地支持中間介質和層次化的體系結構。
  2. 簡單的。客戶端發送一個請求,調用相應的對象, 然后服務器返回結果。這些消息是XML 格式的,并且封裝成符合HTTP 協議的消息。因此,它符合任何路由器、 防火墻或代理服務器的要求。
  3. 完全和廠商無關。SOAP可以相對于平臺、 操作系統、 目標模型和編程語言獨立實現。另外,傳輸和語言綁定以及數據編碼的參數選擇都是由具體的實現決定的。
  4. 與編程語言無關。SOAP 可以使用任何語言來完成,只要客戶端發送正確SOAP 請求( 也就是說, 傳遞一個合適的參數給一個實際的遠端服務器)。SOAP 沒有對象模型,應用程序可以捆綁在任何對象模型中。
  5. 與平臺無關。SOAP 可以在任何操作系統中無需改動正常運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450970.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

程序調試

對拍 $ Windows $ 下的對拍程序 借助 \(Windows\) 腳本echo off :loop r.exe > input.in coronas.exe <input.in > output.a std.exe <input.in > output.b fc output.a output.b if not errorlevel 1 goto loop 一直沒有找到怎樣能控制對拍次數,今天終于醒悟,可…

不怕燒錢怕翻車:雷軍與馬化騰現場“過招”

說起微信&#xff0c;很多時尚潮人都很熟悉。這款軟件可以發送語音信息、可以在有無線網絡的地方免費發送、甚至只需搖一搖就能找到在你附近的用戶&#xff0c;這些方便、時尚、新穎的元素使微信受到了很多用戶的喜愛&#xff0c;也奪得了大量的市場。其實&#xff0c;在微信發…

php基礎(一)

1、header(contentType:text/html,charset:utf-8)設置編碼 2、查找字符串最后一次出現的 strrpos() 查找字符第一次出現的 strpos 3、array_sum() 返回數組值得和 4、func_num_args() 求函數參數的個數 5、func_get_args() 獲取函數的所有參數 6、匿名函數 例子 $anonymityfun…

Thread.yield()和Thread.sleep(0)

關于Thread.yield()和Thread.sleep(0)的語義問題真是一個讓人撓頭的問題&#xff0c;翻了好多資料&#xff0c;在java6語言規范中看到了一段這樣的描述&#xff1a; 重點在紅框中&#xff0c;簡而言之就是&#xff1a;sleep(0)和yield()的實現不需要任何可見的效果。那么在實現…

OOA:面向對象

見&#xff1a;https://baike.baidu.com/item/OOA/3659916?fraladdin OOA:面向對象&#xff1a; Object-Oriented Analysis&#xff08;面向對象分析方法&#xff09;是確定需求或者業務的角度&#xff0c;按照面向對象的思想來分析業務。例如&#xff1a;OOA只是對需求中描述…

DCT原型 ——傅里葉級數

傅里葉級數 法國數學家傅里葉發現&#xff0c;任何周期函數都可以用正弦函數和余弦函數構成的無窮級數來表示&#xff08;選擇正弦函數與余弦函數作為基函數是因為它們是正交的&#xff09;&#xff0c;后世稱為傅里葉級數&#xff08;法語&#xff1a;srie de Fourier&#xf…

c 遞歸算法

#include <stdio.h>double factorial(unsigned int i) {if(i < 1){return 1;}return i * factorial(i - 1); } int main() {int i 15;printf("%d 的階乘為 %f\n", i, factorial(i));return 0; } 轉載于:https://www.cnblogs.com/sea-stream/p/9822437.htm…

紅黑樹和B+樹

&#xff08;一&#xff09;紅黑樹 紅黑樹是一種自平衡二叉查找樹&#xff0c;也被稱為"對稱二叉B樹"&#xff0c;它可以在O(logn)時間內利用 O(logn)的空間來完成查找、插入、刪除操作。紅黑樹的讀操作與普通二叉查找樹相同&#xff0c;而插入和刪除操作可能會破壞…

策略模式、觀察者模式、代理模式、裝飾模式 應用場景和實現

有個大神寫的很好&#xff1a; 參考&#xff1a;設計模式學習筆記&#xff08;四&#xff1a;策略模式&#xff09; 參考&#xff1a;設計模式學習筆記&#xff08;二&#xff1a;觀察者模式&#xff09; 參考&#xff1a;設計模式學習筆記-代理模式 參考&#xff1a;設計模式-…

DQL、DML、DDL、DCL的概念與區別

http://blog.csdn.net/tomatofly/article/details/5949070 SQL語言的分類 SQL語言共分為四大類&#xff1a;數據查詢語言DQL&#xff08;Data Query Language&#xff09;&#xff0c;數據操縱語言DML&#xff0c;數據定義語言DDL(Data Definition Language)&#xff0c;數據…

python學習總結

1.python環境搭建方便&#xff0c;只需要安裝python解釋器 2.python把任意數據類型賦值給變量&#xff0c;不用定義類型 3.Python的整數浮點數沒有大小限制&#xff0c;不用擔心超過數值范圍。比如java的 int&#xff0c;long 4.python自帶最常用的list列表和dicitonary字典&am…

李國杰院士:國內開源社區的崛起需要一個過程

[CSDN.NET 付江/文]日前&#xff0c;在第二屆“龍芯杯”中國開源軟件設計大賽啟動儀式上&#xff0c;CSDN記者專訪了中國工程院院士、第三世界科學院院士李國杰。李國杰院士就國產基礎軟件現狀、面臨的機遇和挑戰、開源環境以及生態系統建設等話題分享了自己的看法。 打造自主…

SuperMap iObject入門開發系列之五管線屬性查詢

本文是一位好友“托馬斯”授權給我來發表的&#xff0c;介紹都是他的研究成果&#xff0c;在此&#xff0c;非常感謝。 管線屬性查詢功能針對單一管線圖層進行特定的條件查詢&#xff0c;然后將查詢結果輸出為列表&#xff0c;并添加點位閃爍功能&#xff0c;例如查詢污水管線中…

三類基于貪心思想的區間覆蓋問題

一、區間完全覆蓋問題 問題描述&#xff1a;給定一個長度為m的區間&#xff0c;再給出n條線段的起點和終點&#xff08;注意這里是閉區間&#xff09;&#xff0c;求最少使用多少條線段可以將整個區間完全覆蓋。 樣例&#xff1a;一個長度為8的區間&#xff0c;可選的線段有[2,…

ubuntu 常用軟件和命令

永久修改屏幕的分辨率   sudo gedit .profile 將下面的四句話加入。.profile文件的最后   cvt 1280 768   xrandr --newmode "1280x768_60.00" 79.50 1280 1344 1472 1664 768 771 781 798 -hsync vsync   xrandr --addmode Virtual1 "1280x768_60.00&q…

Eclipse搭建Android開發環境(安裝ADT,Android4.4.2)

見&#xff1a;http://blog.csdn.net/zht666/article/details/29837777 使用Eclipse做Android開發&#xff0c;需要先在Eclipse上安裝ADT&#xff08;Android Development Tools&#xff09;插件。 1.安裝JDK 1.7 JDK官網http://www.oracle.com/technetwork/java/javase/downlo…

C語言 位操作簡析

位運算 前面介紹的各種運算都是以字節作為最基本位進行的。 但在很多系統程序中常要求在位(bit)一級進行運算或處理。&#xff23;語言提供了位運算的功能&#xff0c; 這使得&#xff23;語言也能像匯編語言一樣用來編寫系統程序。 一、位運算符&#xff23;語言提供了六種位運…

算法:輸入一個鏈表,輸出該鏈表中倒數第k個結點。

算法&#xff1a;輸入一個鏈表&#xff0c;輸出該鏈表中倒數第k個結點。《劍指offer》 思路加到注釋里面了&#xff1b; 1&#xff1a;兩個if判斷是否返回值為空&#xff0c;首個為空&#xff0c;沒有第k個值&#xff1b; 2&#xff1a;for循環找到倒數第k個值&#xff0c;返回…

Spring事務那些事兒

&#xff08;一&#xff09;事務的隔離級別 大家都知道事務有四個屬性&#xff0c;即ACID&#xff08;原子性、一致性、隔離性、持久性&#xff09;。這四個里面稍微難理解點的是一致性和持久性。所謂的一致性是指&#xff1a;事務執行前后數據的一致性狀態&#xff0c;例如事…

Silverlight Blend動畫設計系列八:拖放(Drag-Drop)操作與拖放行為(DragBehavior)

Silverlight & Blend動畫設計系列八&#xff1a;拖放(Drag-Drop)操作與拖放行為(DragBehavior) 原文:Silverlight & Blend動畫設計系列八&#xff1a;拖放(Drag-Drop)操作與拖放行為(DragBehavior)在Silverlight中自身并沒有提供拖放功能的相關實現&#xff0c;要實現拖…