1. 程式人生 > >簡略整理一下RPC、WebService、Restful、Json、Xml這些概念之間的關係

簡略整理一下RPC、WebService、Restful、Json、Xml這些概念之間的關係

RPC有2層含義:

(1)      (協議層)編碼方式

(2)      (傳輸層)傳輸方式

 

RPC

協議層\傳輸層

TCP

WebSocket

Http(WebService)

文字

XML

/

/

Xml-Http(SOAP)

Json

Json-RPC(TCP)

Json-RPC(WebSocket)

Json-Http

Yaml

*

*

*

WSDL

/

/

*

*

/

/

Corba

*

/

/

RMI

 

 

 

 

 

 

 

 

2進位制

Thrift

Thrift

/

/

Protobuf

Protobuf

 

gRPC

MsgPack

MsgPack

/

/

hessian

hessian

/

/

dobbo

dobbo

/

/

 

 

 

 

 

 

 

RestFul

 

 

 

 

 

 

有些概念(技術)之間的關係不適合比較,因為不屬於同一個層次;比如Restful、WebService, etc。

眾所周知,Json-RPC很普遍;但是Json-RPC並沒有限制承載協議,不必只能用Http,WebSocket、TCP照樣可以。

有一個地方大家誤會很多,Restful,以為與Http關係嚴密就像搞基;其實,RestFul也沒有限制承載協議(會話層協議),不必非要Http,滿足Restful的原則即可。

 

另外,RestFul並非什麼新鮮東西,其實滿大街都是;我們能看見的Web服務,大多數是RestFul的,只不過實現不像RestFul期望得那麼完整。

(圖表裡,對Corba、RMI的歸類很大可能是錯的,對於這些老古董,其實不必太關心)