1. Web Service使用场景
现在有这样一种场景:ProjectA用Java开发部署运行在Windows平台,而ProjectB用Python开发部署运行在Linux平台,现在ProjectA和ProjectB需要交换数据,除了使用消息中间件,我们还可以使用Web Service实现方式RESTful、RPC、SOAP进行数据交换。
2. Web Service是什么
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的一套标准。
- 跨编程语言:可以在不同语言开发的应用之间交换数据(比如Java和Python之间)
- 跨操作平台:可以在不用操作系统之间交换数据(比如Windows和Linux之间)
3. Web Service实现方式
3.1 SOAP(Simple Object Access Protocol,即简单对象访问协议)
SOAP是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。其实就是交换数据的一种协议规范。SOAP使用因特网应用层协议作为其传输协议。SMTP以及HTTP协议都可以用来传输SOAP消息,但是由于HTTP在如今的因特网结构中工作得很好,特别是在网络防火墙下仍然正常工作,所以被广泛采纳。SOAP亦可以在HTTPS上传输。
SOAP的消息格式必须采用XML。
3.2 RESTful(Representational State Transfer,表现层状态转换)
采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源,REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。简单来说就是URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。
比如用HTTP动词GET请求ID为1001用户的用户信息:URL定位资源https:127.0.0.1/8080/api/v1.0/user/1001,对于1001用户信息在网络中是资源
比如用HTTP动词PUT更新ID为1001用户的用户信息:URL定位资源https:127.0.0.1/8080/api/v1.0/user?userId=1001,然后在HTTP 请求体里面以JSON格式传入更新的内容。
3.3 PRC(Remote Procedure Call, 远程过程调用)
在分布式计算,远程过程调用是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
RPC是一种进程间通信的模式,程序分布在不同的地址空间里。如果在同一主机里,RPC可以通过不同的虚拟地址空间(即便使用相同的物理地址)进行通讯,而在不同的主机间,则通过不同的物理进行交互。许多技术(常常是不兼容)都是基于这种概念而实现的。