SOA、Rest、Soap、RPC概念理解与区分

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

你可能感兴趣的:(java中级)