簡略整理一下RPC、WebService、Restful、Json、Xml這些概念之間的關係
阿新 • • 發佈:2018-11-22
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的歸類很大可能是錯的,對於這些老古董,其實不必太關心)