為什么很多第三方接口,都改成了基于http,直接傳遞json數據的方式來代替webservice?

soゝso 2016-08-22 18:17:49 34790

問題:

曾經不同系統間交互問題時,總是優先考慮webserivce,現在看到除了一些老牌的公司,比如 amazonk 對眾的接口還是webservice的方 式,其他很多國內新項目的接口都開始轉向直接傳 JSON  的方式。我知道的優勢之一,就是webservice的消息體肯定比json這種方式要大。請問, 除此之外,設計這些對眾接口的時候,還有什么其他的考慮嗎?


回答:

這實際上是三個問題,從WebService到今天流行的RESTful API(JSON ) over  HTTP  ,經歷了數次變革。

1 WebService有很多協議,為什么HTTP比較流行?

WebService是個很重型的規范,它的應用協議是SOAP(簡單對象訪問協議),它所依賴的下層通信方式不單單是HTTP,也有SOAP over SMTP, SOAP over  TCP  ,由于 HTTP  協議群眾基礎廣,開發調試方便,所以,成了WebService中最為流行的方式。

甚至很多公司在內網通信,也用 HTTP  來做,比如,應用調用搜索引擎,Solr就是一個例子。

HTTP  也是 TCP  上性能比較差的協議,因為HTTP是基于 TCP  的,有3次握手,再加上HTTP是個文本傳輸協議(雖然也可以傳二進制的附件, 但業務邏輯還是文本用的多),又有很多復雜的HEADER。所以人們發明了一些更高效的通信協議來做遠程調用,比如ACE、ICE、Corba、淘寶的 HSF,但這是后話了,不展開細說。你只要知道, HTTP  之所以流行,乃是簡單易用群眾基礎廣的結果。

2 WebService為什么不如RESTful API流行

WebService誕生十幾年了,最初是IBM、微軟比較熱心在推,一直也不溫不火。倒是XML-RPC, RESTful以及比RESTful還要簡陋的遠程調用方式后來居上。感覺是不是有點像民間的Spring干掉官方的EJB?

究其原因,還是WebService實在太笨重了,SOAP信封猶如婆娘的裹腳布,又臭又長,廣大開發人員是叔可忍嫂不能忍,于是就有了簡化版的, 叫XML-RPC,后來伴隨著Web2.0流行,RESTful獨領風騷。我在10年前做過一個產品,純PHP+JS,標準的WebService,連 WSDL我都要專門寫個PHP程序來生成,還好只是我一個人開發,要是團隊協作,我早就被罵得不成人形了。

再后來,連RESTful都被嫌棄了,大伙兒干脆連PUT、DELETE都懶得用,直接用GETPOST。

同時,我得說,這只是在互聯網領域,大部分企業的業務邏輯相對簡單,同時工期又變態的短(就像大部分互聯網創業公司用糙快猛的PHP,而不用相對嚴 謹的Java一樣)。在某些業務復雜,穩定性和正確性要求高的領域(如ERP、電商、支付),WebService還有是用武之地的。

3 為什么JSON比XML流行

還是易用性,JSON的可讀性比XML強幾條長安街,解析規則也簡單許多。 XML  解析的時候規則太多了,動不動就非法字符,動不動就拋異常。這對追求高開發速度和低開發門檻的企業來說,是個致命傷。

JSON的缺點是數據類型支持較少,且不精確。比方說:

{"price":12580}

在json里,你無法知道這個價格是int, float還是double。

所以,如上面第二條所述,在一些業務要求較高的領域,還是XML更合適。

最后說一下性能, JSON  的性能高于XML,除此之外,基于 XML  HTTP  WebService  , 基于 JSON  RESTful API ,并沒有性能差異。

XML  性能糟糕到什么地步呢,有一種專門的CPU叫做XML Accelerator,專門為XML解析提供硬件加速。


版權所屬:SO JSON在線解析

原文地址:http://www.380127.tw/blog/46.html

轉載時必須以鏈接形式注明原始出處及本聲明。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關于作者
一個低調而悶騷的男人。
相關文章
JSON什么?它能帶來什么?它和XML比較?
為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比
JSOUP 教程,JSOUP請求JSON ,JSOUP返回JSON 數據
Freemarker靜態化加載模板的方式
對Redis的理解,Redis是什么,Redis和Memcache誰快?
為什么undefined、NaN和Infinity可以被賦值,而null不可以?
Jackson 美化輸出JSON,優雅的輸出JSON數據,格式化輸出JSON數據... ...
Springboot HTTP請求,Springboot HTTP 請求 Demo。Get/Post
在線HTTP接口測試 - HTTP GET/POST模擬請求測試工具【更新說明】
city.json
最新文章
QUIC / HTTP3 協議詳細分析講解 1269
恭喜那個做云存儲的七牛云完成 F 輪 10 億人民幣的融資,開啟新的云旅程 1896
Autojs怎么安全加密?Autojs在線加密工具注意事項。 2793
Java JSON 組件選型之 FastJson 為什么總有漏洞? 8471
使用七牛云存儲實現圖片API,自動刪除圖片方案合集 2516
神速ICP備案經驗分享,ICP備案居然一天就通過了 3912
百度加強推送URL鏈接,百度SEO強行推送鏈接JavaScript代碼案例講解。 4097
SOJSON 拓展服務器被DDos攻擊了一晚上,是如何解決的? 4868
湖南地區備案“新增網站需提交組網方案或解釋說明”,關于備案做簡單敘述 5207
企查查你是個什么企業,騙子的幫兇,詐騙的集中營,通過企查查騷擾企業電話不斷,為所欲為的企查查 12132
最熱文章
蘋果電腦Mac怎么恢復出廠系統?蘋果系統怎么重裝系統? 466302
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 433508
免費天氣API,全國天氣 JSON API接口,可以獲取五天的天氣預報 364614
最新MyEclipse8.5注冊碼,有效期到2020年 (已經更新) 357980
免費天氣API,天氣JSON API,不限次數獲取十五天的天氣預報 322053
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 239378
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 203779
談談斐訊路由器劫持,你用斐訊路由器,你需要知道的事情 147412
Elasticsearch教程(一),全程直播(小白級別) 127696
Java 信任所有SSL證書,HTTPS請求拋錯,忽略證書請求完美解決 105454

騷碼加入我們 / 千人QQ群:259217951

入群需要5元為的是沒有垃圾廣告,如果沒有QQ錢包,可以加群主拉進。

二維碼生成 來自 >> 二維碼生成器。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

查看我的收藏

正在加載... ...

时时乐上海走势图连线