1. 程式人生 > >WebAPI 和 webservice的區別

WebAPI 和 webservice的區別

WebAPI 和 WebService的區別

webapi用的是http協議,webservice用的是soap協議
webapi無狀態,相對webservice更輕量級。webapi支援如get,post等http操作

http soap關係

http:是一個客戶端和伺服器端請求和應答的標準(TCP)。http協議其目的是為了提供一種釋出和接收htttp頁面的方法

一http協議的客戶端與伺服器的互動:由HTTP客戶端發起一個請求,建立一個到伺服器指定埠(預設是80埠)的TCP連線。HTTP伺服器則在那個埠監聽客戶端傳送過來的請求。一旦收到請求,伺服器(向客戶端)發回一個狀態行,比如”HTTP/1.1 200 OK”,和(響應的)訊息,訊息的訊息體可能是請求的檔案、錯誤訊息、或者其它一些資訊。

soap 協議:它描述了一種在分散或分散式的環境中如何交換資訊的輕量級協議。soap在http協議的基礎上,一個基於XML的協議。

不同:都是底層的通訊協議,請求包的格式不同而已,soap包是XML格式,http純文字格式。

關係:SOAP是個通訊協議, SOAP在HTTP協議的基礎上,把編寫成XML的REQUEST引數, 放在HTTP BODY上提交個WEB SERVICE伺服器(SERVLET,ASP什麼的) 處理完成後,結果也寫成XML作為RESPONSE送回使用者端, 為了使使用者端和WEB SERVICE可以相互對應,可以使用WSDL作為這種通訊方式的描述檔案,利用WSDL工具可以自動生成WS和使用者端的框架檔案,SOAP具備把複雜物件序列化捆綁到XML裡去的能力。
  

WCF和WEB API我該選擇哪個?
  1、當你想建立一個支援訊息、訊息佇列、雙工通訊的服務時,你應該選擇WCF
  2、當你想建立一個服務,可以用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支援HTTP。
  3、當你想建立一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特徵時(比如URIs、request/response頭,快取,版本控制,多種內容格式),你應該選擇Web API
  4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API

SOAP:Simple Object Access Protocol


簡單物件訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的資訊。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文字傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支援從訊息系統到遠端過程呼叫(RPC)等大量的應用程式。

HTTP協議: 應用層
TCP協議 : 傳輸層

HTTP協議詳解之響應篇

在接收和解釋請求訊息後,伺服器返回一個HTTP響應訊息。

HTTP響應也是由三個部分組成,分別是:狀態行、訊息報頭、響應正文
1、狀態行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示伺服器HTTP協議的版本;Status-Code表示伺服器發回的響應狀態程式碼;Reason-Phrase表示狀態程式碼的文字描述。
狀態程式碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:
1xx:指示資訊–表示請求已接收,繼續處理
2xx:成功–表示請求已被成功接收、理解、接受
3xx:重定向–要完成請求必須進行更進一步的操作
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤–伺服器未能實現合法的請求
常見狀態程式碼、狀態描述、說明:
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被伺服器所理解
401 Unauthorized //請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden //伺服器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //伺服器發生不可預期的錯誤
503 Server Unavailable //伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
eg:HTTP/1.1 200 OK (CRLF)

2、響應報頭後述

3、響應正文就是伺服器返回的資源的內容

相關推薦

WebAPI webservice區別

WebAPI 和 WebService的區別 webapi用的是http協議,webservice用的是soap協議 webapi無狀態,相對webservice更輕量級。webapi支援如get,post等http操作 http soap關係 http

dubbowebservice 區別

如何實現遠端通訊? 遠端通訊:Webservice、restful、dubbo 1、Webservice:效率不高基於soap協議,其主要的特點是跨語言、跨平臺的。專案中不推薦使用,可用於不同公司間介面的呼叫。 2、使用restful形式的服務:http+json。很多

.net core學習筆記《sdkruntime區別及使用CLI在Ubuntu上快速搭建Console,WebApi,MVC三大應用模型》

img 裝包 new 來看 tin console bubuko file 接下來 一、需要安裝的軟件 1、虛擬機安裝Ubuntu系統(本人用的是vmware-14.1.12和buntu-18.04) 2、Xshell或 Putty(連接ssh服務) 3、FileZilla

WCF、WebAPI之間的區別選擇

WCF   1、基於SOAP,資料格式是XML   2、是Web Service(ASMX)的進化版,可以支援各種各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.   3、配置起來特別的繁瑣   4、不開源,但可以被任意一個瞭解XML的人使用   5、可以部署應用程式

RPCWebService區別

最近分析的這個系統,邏輯架構中有一層是RPC interface。之前對RPC不熟悉,就上網搜尋了一下資料,在此總結一下: RPC是Remote Procedure Calling,遠端過程呼叫的縮寫。並不是“遠端程序呼叫”——Remote Process Calling。

webservice、sockethttp 區別(一)

webservice是基於http協議的soap協議的封裝和補充,如果你考慮公共穩定的介面,你可以努力的考慮一下。至於socket和http、webservices是否放在一起比較和考慮主要還是看你關心的角度,而這個角度可以是技術層面的 ,也可以是使用者需求層面1 資料傳輸

webservicedubbo區別

webservice  不需要搭建註冊中心,是一個服務框架,主要內容有soap協議,uuid註冊中心,wsdl檔案。   dubbo   需要搭建註冊中心,可以是zookeeper,redis。它是一個分散式服務框架,基於rpc協議,和httpurlconnecti

WebApiMVC有什麼區別

首先要重點說的是,Web API是一種無限接近於RESTful風格的輕型框架,且不是微軟提出來的,微軟在.NET上實現了這中框架—http://Asp.Net Web API,所以“微軟包裝”是一個極大的偏見。 就應用市場時間而論,MVC普及市場的時間比Web AP

.NET 的 WCF WebService 有什麼區別

        WCF其實一定程度上就是ASP.NET Web Service,因為它支援Web Service的行業標準和核心協議,因此ASP.NET Web Service和WSE能做的事情,它幾乎都能勝任,跨平臺和語言更不是問題(資料也支援XML格式化,而且提供了自己的格式化器)。 但是WCF作為微軟主

http介面webservice介面的區別

web service(SOAP)與HTTP介面的區別 什麼是web service? soap請求是HTTP POST的一個專用版本,遵循一種特殊的xml訊息格式Content-type設定為: text/xml任何資料都可以xml化。 為什麼要學習web s

GETPOST區別總結

get 、post 、區別一、GET和POST區別的普遍看法:HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,如果我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:1)Get, 它用於獲取信息,註

JS中const、varlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

equals == 的區別

strong 都是 什麽 brush -s 新的 equals方法 實現 繼承 首先 看比較的對象是否為字符串,若為(String)字符串用equals 比較, 比較的是他們的值。相同返回 true ,不相同返回false. package one; p

mybatis中的#$的區別

背景 插入 trac sql註入 -m .com article 參數 -s 1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麽解析成sql時的值為order by "111", 如果傳

hibernate中hql語句中listiterate區別

每次 hibernate 寫入 所有 讀取 條件 iter 查詢 hql 1.使用list()方法獲取查詢結果,每次發出一條語句,獲取全部數據。2.使用iterate()方法獲取查詢結果,先發出一條SQL語句用來查詢滿足條件數據的id,然後依次按照這些id查詢記錄,也就是要

java中ArrayListLinkedList區別

插入 list 新的 查找 arr tro 基於 列表 時間復雜度 ArrayList和LinkedList最主要的區別是基於不同數據結構 ArrayList是基於動態數組的數據結構,LinkedList基於鏈表的數據結構,針對這點,從時間復雜度和空間復雜度來看主要區別:

mysql中replicate_wild_do_tablereplicate_do_db區別

lan rep cati mil 多人 pan think lte 避免 使用replicate_do_db和replicate_ignore_db時有一個隱患,跨庫更新時會出錯。 如在Master(主)服務器上設置 replicate_do_db=test(my.conf

2000行之宏中###的區別

ret fun color bsp nbsp urn div def include #include<stdio.h> #define Fun(a,b) a##b int main() { x=‘H‘; y=‘W‘; printf("

HTML提交方式postget區別(實驗)

des url action 通過 性別 清除數據 map pass pack HTML提交方式post和get區別(實驗) 一、post和get區別 get提交,提交的信息都顯示在地址欄中。 post提交,提交的信息不顯示地址欄中,顯示在消息體中。 二、客戶端代碼

stringbuffer stringbuilder區別

uil build 線程 區別 單線程 線程安全 多線程操作 buffer 少量數據 stringbuffer 和 stringbuilder速度 小於 線程安全 線程非安全 單線程操作