SOA
- 面向服務架構。
- 是一種軟件設計模式,主要應用於不同應用組件之間通過某種協議來互操作。
- 因爲SOA不依賴於任何技術,因此SOAP、RPC、REST是對SOA的不同實現。
SOAP
- 簡單對象訪問協議,是一種輕量的、簡單的、基於XML的協議
- 可在任何傳輸協議(諸如 TCP、HTTP、SMTP,甚至是 MSMQ)上使用
- 其中,SOAP廣泛使用的是基於HTTP和xml協議的實現(SOAP=RPC+HTTP+XML),也就是大家常提的Web Service使用的通信協議
REST
- 表徵狀態轉移。採用Web 服務使用標準的 HTTP 方法 (GET/PUT/POST/DELETE) 將所有 Web 系統的服務抽象爲資源。
- 目前較爲流行的一種組件通信方式。在微服務中有較多使用
- REST不是一種協議,它是一種架構, 一種 Web Service 能夠如果滿足 REST 的幾個條件, 通常就稱這個系統是 Restful的
RPC
- 遠程方法調用,就是像調用本地方法一樣調用遠程方法
- dubbo就是一種RPC框架。他的通訊協議是RPC協議
- 4種典型RPC遠程調用框架:RMI、Hessian、thrift、dubbo
- Spring Cloud也是一種RPC框架,但是區別是它使用的是http協議(要區分應用層協議和傳輸協議)的傳輸,整體技術和普通RPC如dubbo[使用TCP協議]/thrift有很大區別
微服務和SOA的區別
- 微服務是SOA架構演進的結果。
- 兩者說到底都是對外提供接口的一種架構設計方式,隨着互聯網的發展,複雜的平臺、業務的出現,導致SOA架構向更細粒度、更通過化程度發展,就成了所謂的微服務了。
- 兩者說到底都是對外提供接口的一種架構設計方式,隨着互聯網的發展,複雜的平臺、業務的出現,導致SOA架構向更細粒度、更通過化程度發展,就成了所謂的微服務了。
- 微服務是SOA發展出來的產物,它是一種比較現代化的細粒度的SOA實現方式。
- SOA與微服務的區別在於如下幾個方面:
- 微服務相比於SOA更加精細,微服務更多的以獨立的進程的方式存在,互相之間並無影響
- 微服務提供的接口方式更加通用化,例如HTTP RESTful方式,各種終端都可以調用,無關語言、平臺限制
- 微服務更傾向於分佈式去中心化的部署方式,在互聯網業務場景下更適合
RPC與 REST 的區別
- Rest基於http作爲應用協議,不同語言之間調用比較方便。典型代表就是spring cloud框架
- RPC是基於TCP和HTTP協議的,是把http作爲一種傳輸協議,本身還會封裝一層RPC框架的應用層協議,不同語言之間調用需要依賴RPC協議,典型代表就是Dubbo
REST和SOAP協議的區別
- REST基於HTTP協議
- SOAP基於任何傳輸協議:諸如 TCP、HTTP、SMTP,甚至是 MSMQ等
- SOAP 是一種 RPC 框架,HTTP 是承載協議,本身是一種應用協議,實現了調用遠程就像調用本地接口一樣
- REST 是一種架構風格,客戶端需要通過 URL 去調用服務端,HTTP 本身即是承載協議,也是應用協議
- SOAP 適合企業應用,REST 更適合高併發場景。 SOAP 的業務狀態大多是維護在服務端的,而 REST 是無狀態的操作,維護的是資源狀態,將會話狀態交由客戶端維護
參考鏈接
- https://www.cnblogs.com/aspirant/p/9172336.html
- https://blog.csdn.net/jiaoyajieqianyi/article/details/84102840