接口(服务)之间的调用方式有哪些?/软件系统之间接口的几种通讯方式?

常见的接口调用方式有三种(设计接口的时候要考虑选用哪种接口)

1、http接口:http是一种网络传输协议,基于TCP。(等价于:http+json)
现在浏览器客户端与服务器端通信基本都是采用http协议。
SpringCloud框架,各个服务间也是通过http方式来实现的。
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串。
http有几个特点:
(1)规定了数据格式
(2)对服务没有任何技术限定,自由灵活,更符合为服务理念。
(3)现在热门的REST风格 / RESTful 风格,就可通过Http协议来实现。

请求方式:post/get/put/delete 等。
传输的数据格式(一般而言):JSON

2、rpc接口:远程过程调用(类似的还有RMI),基于TCP。
自定义数据式,基于原生TCP通信,速度快,效率高。
现在热门的dubbo框架,就是RPC的典型代表。
rpc有几个特点:
(1)数据的格式可以自定义(一般是XML)。
(2)速度快,效率高。
(3)现在比较热门的dubbo就是RPC的典型代表。

传输的数据格式:XML

3、webservice接口:Webservice是系统对外的接口。(等价于:http+xml)
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的。
webService接口提供的服务是基于web容器的,底层使用http协议,类似一个远程的服务提供者,比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨平台的。就是通过一个servlet,提供服务出去。

首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService服务器进行Request 和Response 当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解 析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。这就是WebService的一个运行过程。

webservice大体上分为5个层次:

  1. Http传输信道
  2. XML的数据格式
  3. SOAP封装格式
  4. WSDL的描述方式
  5. UDDI UDDI是一种目录服务,企业可以使用它对Webservices进行注册和搜索

应用协议是SOAP(简单对象访问协议)
传输的数据格式:XML

4、总结1(接口的选择)
现在很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice。
但是webservice接口能传输数据量比较大的数据,而且可以跟语言无关,也可以跟操作系统无关。
在某些业务复杂,稳定性和正确性要求高的领域(如ERP、电商、支付),WebService还有是用武之地的。

5、总结2(传输数据格式的选择)
为什么JSON比XML流行
还是易用性,JSON的可读性比XML强,解析规则也简单许多。
XML 解析的时候规则太多了,动不动就非法字符,动不动就抛异常。这对追求高开发速度和低开发门槛的企业来说,是个致命伤。

JSON的缺点是数据类型支持较少,且不精确。比方说:

{
     "price":12580}

在json里,你无法知道这个价格是int, float还是double。

所以,如上面第二条所述,在一些业务要求较高的领域,还是XML更合适。

最后说一下性能, JSON 的性能高于XML,除此之外,基于 XML 和 HTTP 的 WebService , 基于 JSON 的RESTful API ,并没有性能差异。

6、学习链接
链接1:点我
链接2:点我
链接3:点我

你可能感兴趣的:(java开发架构,java,接口)