Http、Socket和WebService协议之间的区别
?
?
1 數(shù)據(jù)傳輸方式
1.1 socket傳輸?shù)亩x和其特點
? ? 所謂socket通常也稱作"套接字",實現(xiàn)服務(wù)器和客戶端之間的物理連接,并進行數(shù)據(jù)傳輸,主要有udp和tcp兩個協(xié)議。socket處于網(wǎng)絡(luò)協(xié)議的傳輸層。
? ? udp協(xié)議:廣播式數(shù)據(jù)傳輸,不進行數(shù)據(jù)驗證
? ? tcp協(xié)議:傳輸控制協(xié)議,一種面向連接的協(xié)議,給用戶進程提供可靠的全雙工的字節(jié)流。
? ?socket傳輸?shù)奶攸c:
? ?優(yōu)點
? ?1) 傳輸數(shù)據(jù)為字節(jié)級,傳輸數(shù)據(jù)可自定義,數(shù)據(jù)量小(對于手機應(yīng)用講:費用低)
? ?2) 傳輸數(shù)據(jù)時間短,性能高
? ?3) 適合于客戶端和服務(wù)器端之間信息實時交互
? ?4) 可以加密,數(shù)據(jù)安全性強
? ?缺點:
? ?1) 需對傳輸?shù)臄?shù)據(jù)進行解析,轉(zhuǎn)化成應(yīng)用級的數(shù)據(jù)
? ?2) 對開發(fā)人員的開發(fā)水平要求高
? ?3) 相對于http協(xié)議傳輸,增加了開發(fā)量
?socket傳輸適用范圍
? 基于socket傳輸?shù)奶攸c :?socket 傳輸方式適合于對傳輸速度,安全性,實時交互,費用等要求高的應(yīng)用中,如網(wǎng)絡(luò)游戲,手機應(yīng)用,銀行內(nèi)部交互等
?
1.2 基于http協(xié)議傳輸?shù)亩x和其特點
? ?目前基于http協(xié)議傳輸?shù)闹饕衕ttp協(xié)議?和基于http協(xié)議的soap協(xié)議(web service),常見的方式是 http 的post 和get 請求,web 服務(wù)。
? ?基于http協(xié)議的傳輸特點
? ?優(yōu)點:
? ?1) 基于應(yīng)用級的接口使用方便
? ?2) 程序員開發(fā)水平要求不高,容錯性強
? ?缺點:
? ?1) 傳輸速度慢,數(shù)據(jù)包大(http協(xié)議中包含輔助應(yīng)用信息)
? ?2) 如實時交互,服務(wù)器性能壓力大。
? ?3) 數(shù)據(jù)傳輸安全性差
? ?基于http協(xié)議傳輸?shù)倪m用范圍
? ?基于http協(xié)議傳輸?shù)奶攸c:基于http協(xié)議傳輸方式適合于對傳輸速度,安全性要求不是很高,且需要快速開發(fā)的應(yīng)用。如公司oa系統(tǒng),互聯(lián)網(wǎng)服務(wù)等
?
WebService與Socket的區(qū)別
區(qū)別1.
Socket是基于TCP/IP的傳輸層協(xié)議。
WebService是基于HTTP協(xié)議傳輸數(shù)據(jù)的,HTTP是基于TCP的應(yīng)用層協(xié)議。
區(qū)別2.
WebService采用了基于HTTP的SOAP協(xié)議傳輸數(shù)據(jù),接口支持面向?qū)ο?#xff0c;最終WebService會將對象進行序列化后通過流傳輸。
Socket接口直接通過流進行傳輸,不支持面向?qū)ο蟆?/p>
Socket在傳輸層,WebService在應(yīng)用層。。http 協(xié)議基于socket,此外,web service基于http協(xié)議和soap。
【結(jié)論】
WebService采用SOAP協(xié)議進行傳輸,底層是基于Socket通信的。
WebService不需要針對數(shù)據(jù)流的發(fā)送和就收進行處理,是一種跨平臺的面向?qū)ο筮h程調(diào)用技術(shù)。
?socket和webservice都有跨平臺的優(yōu)點,但是:
? ? ? ??socket偏底層,效率高,但是開發(fā)成本大。
? ? ? ? webservice效率低,但是開發(fā)成本低廉。
【Socket和WebService應(yīng)用場景】
[ socket ]
socket通信的即時性比http好。socket 是基于傳輸層的,http基于應(yīng)用層,socket是一切通過端口通信的基礎(chǔ)(包括http)
Socket處于是OSI 7層協(xié)議中的第四層(傳輸層) ?Socket僅僅是傳輸層抽象在OS基礎(chǔ)上的一個接口而已。
適用于傳輸大數(shù)據(jù)量的數(shù)據(jù)。
缺點:由于傳輸?shù)臄?shù)據(jù)需要手動解析,socket通信的接口協(xié)議需要自定義,比如:自定義一種字符串拼接的格式,或者自定義的XML數(shù)據(jù),自定義的麻煩之處在于接口調(diào)用方法和接口服務(wù)端需要相互討論確定接口的協(xié)議內(nèi)容,不方便。
優(yōu)點:適合傳輸大數(shù)據(jù)量的數(shù)據(jù)。
常重要的SOAP是應(yīng)用層的一個協(xié)議,而SOAP通常綁定的Http協(xié)議也是第七層的一種協(xié)議。Socket效率高,但容易被防火墻屏蔽。
socket,提供了tcp/ip或者udp的通信的實現(xiàn),如果做標(biāo)準(zhǔn)的服務(wù)器,比如下載服務(wù)器;或者語音通信的程序,或者視頻,文件傳輸……這些只能用socket。
單純用socket寫會很煩的,你要處理各種東西,協(xié)議的編解碼等等,所以這種情況下推薦mina,netty或者grizzly。
?
[ WebService ]
WebService遵循標(biāo)準(zhǔn)的SOAP協(xié)議,SOAP協(xié)議的內(nèi)容格式固定,SOAP協(xié)議傳遞的內(nèi)容是XML數(shù)據(jù),由于WebService是基于HTTP的,所以簡單理解SOAP=HTTP+XML,因為WebService要經(jīng)過兩次序列化,所以導(dǎo)致其傳輸速度慢,適用于沒有性能要求且數(shù)據(jù)傳輸量小的場景,推薦在公開接口上使用WebService。
webservice基于HTTP協(xié)議,因此可以利用現(xiàn)有非常成熟的Web集群來提供高負載,同比之下 socket就非常難。
webservice離不開web服務(wù)器(apache),web服務(wù)器是一個在公網(wǎng)上提供http通信的服務(wù)器.webservice 一般都建立在web服務(wù)器上,以供別人調(diào)用。
WebService效率差點,走http協(xié)議,一般不會被防火墻屏蔽。
webservice,基于http協(xié)議,以xml為載體的通信方式。
? ? 好處:一直觀,二標(biāo)準(zhǔn),也方便異構(gòu)系統(tǒng)的交互。
? ? 如果想提供對外的業(yè)務(wù)訪問的接口,可能需要瀏覽器,各種語言的客戶端等各種異構(gòu)系統(tǒng)訪問,是首選。
?
?
我覺得把socket和http、webservices等等放在一起對比不是很合適,所謂http的都是對socket進行了一次包裝而已,后者更加底層。
轉(zhuǎn)載于:https://www.cnblogs.com/zhangbao003/p/9340609.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Http、Socket和WebService协议之间的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装rpm报错:requires Rub
- 下一篇: 【校招面试 之 C/C++】第17题 C