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