RPC与WebService简单理解

1.RPC相关基础
1.1 什么是RPC

RPC(Remote Procedure Call),远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。(来自百度百科)

RPC允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不需要显式编码这个远程调用的细节。(来自CSDN博客:https://blog.csdn.net/mindfloating/article/details/39473807)

1.2 RPC的特点

从上面的概念中,能大概总结出RPC的基本特点如下:

  • 通过网络传输的 跨终端
  • 跨平台的
  • 基于请求-响应的
  • 只调用过程,不需关注细节

1.3 RPC的基本原理

在底层去看,RPC其实就是将流从一台计算机传输到另外一台计算机,无论是基于传输协议(http、tcp、udp等等)和网络IO(bio、nio)来实现。
1.4 常见的RPC的调用技术

  • SpringCloud(Spring的,基于REST的,SOA架构的分布式框架,严格意义上讲SpringCloud不是一个RPC框架,它是REST框架)
  • Dubbo(x)(阿里巴巴的,基于Socket的,SOA架构的分布式框架)
  • WebService(跨语言的,基于SOAP协议,走xml数据或json数据)
  • Hessian(跨语言的,基于Binary-RPC协议,走二进制数据)
  • HttpClient(通常用于RESTful风格的调用,跨语言,基于http和json)
  • jdk原生(HttpURLConnection)

参考资料:https://www.cnblogs.com/cainiao-Shun666/p/9181903.html

2. WebService是什么

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。(来自百度百科)

简单的来讲:WebService是一种跨语言和跨操作系统的远程调用技术

有篇博客里讲的一段话不错,摘抄下来供小伙伴阅读:

其实可以从多个角度来理解
WebService,从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写WebService,只要我们可以通过WebService标准对这些服务进行查询和访问。(来自博客:https://www.cnblogs.com/xdp-gacl/p/4048937.html)
2018.08.22补充: 评论里一位老哥提出了对SOAP、WebService、Socket的一些见解和指正,特此感谢!以下是评论原文: SOAP是WebService的一种,REST也是WebService的一种。
所谓WebService,就是一种符合国际标准格式的HttpService,包括SOAP,REST等标准,协议为HTTP;与之对应的是Socket。而grpc,thrift基本都是定制化的Socket,这是因为Socket本身无标准数据格式,你可以称thrift为TCP界的REST,我是这样来理解的;而新来的WebSocket则是介于TCP,HTTP之间的一种满足浏览器某些方面的特殊访问,它是随浏览器和W3C标准的进化而产生的。

3. 为什么要用WebService
平台语言无关性——WebService基于SOAP协议,且发布的所有服务都有对应的xml(wsdl),可以实现跨平台、跨语言的支持
安全通信——WebService走http请求,不受防火墙限制
功能复用——通过使用WebService,可以暴露共用服务,实现功能复用

实际上一个WebService可以看做一个独立的功能,供外界使用。
4. WebService的核心
4.1 SOAP
SOAP(Simple Object Access Protocal),即简单对象访问协议,它用来描述传递信息的格式。
SOAP是一种简单的基于xml的协议和规范,它使应用程序通过http来交换信息。
SOAP可以简单理解为http + xml。

其实,WebService通过http协议发送请求和接收结果时,发送的请求内容和结果内容都采用xml格式封装,并增加了一些特定的http消息头,以说明 http消息的内容格式,这些特定的http消息头和xml内容格式就是SOAP协议。

4.2 WSDL

WSDL(Web Services Description Language),即网络服务描述语言,可描述WebService服务。
一句话概括:WSDL是基于xml的用于描述WebService及其方法、参数和返回值的“说明书”。

WSDL设计成xml是有章可循的:xml可以很容易被DOM解析,标签及属性也容易被人阅读,进而看懂相应服务的使用方式。

每一个WebService服务必定会有它对应的WSDL,通过这个WSDL,可以在不同语言平台上解析成对应语言的源码,进而被开发者使用。

4.3 UDDI

UDDI 的目的是为电子商务建立标准。
UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

5. 什么时候可以用WebService

  • 提供统一服务访问接口(没有语言限制
  • 系统间服务发布与调用
  • 分布式(可以用但不方便,当然现在用的更多的是SpringCloud和Dubbo(x))
  • 对性能要求不是很高的服务

6. 在Java中有什么方式使用WebService

  • jdk原生的WebService方式(基础)
  • 使用Apache的CXF框架(常用
  • 使用Apache的axis框架(多语言,重量级)
  • 使用XFire框架(已没落)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值