Web Service 是什么?
Service(服务) 即:从传统意义上,运行在计算机后台(Daemon)的程序所提供的某种功能,成为“服务”。通俗的说,“服务”就是计算机可以提供的某种功能。
那么根据来源的不同,“服务”分为两种:
- 本地服务:使用同一台机器提供的服务,不需要网络支持;
- 网络服务:使用另一台或者多台机器提供服务,需要网络的支持,其本质是通过网络去调用其他网站的资源。
Web Service 架构和云
若一个软件/网站主要部分采用了“网络服务”,即它把存储环节和计算环节“外包”给了其他网站,那么就可以认为这个软件/网站属于 Web Service 架构;
而其核心思想是,将不属于自己的核心业务和服务交给其他Web Service去做,自己只做核心业务和服务。“云计算”和“云服务”就是其同义词,只不过说法不同而已。
本地服务的缺陷
其原因和缺陷主要由以下三点:
- 本地资源不足:很多的数据和资料,仅仅通过本地资源是不够的或者说是不全面的;
- 成本因素:本地提供服务通常是高成本的,成本的来源通常是硬件和人员,硬件不用多说,就说人员还需要再专门找一个;
- 可移植性差:就是说将本地服务和数据移植到其他的机器上,很困难,尤其是跨平台。
Web Service的优势
除了本地服务的缺点以外,还具有如下四点优势:
- 平台无关。不管你使用什么平台,都可以使用Web service。
- 编程语言无关。只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Web service。这大大增加了web service的适用性,降低了对程序员的要求。
- 对于Web service提供者来说,部署、升级和维护Web service都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。
- 对于Web service使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。
Web service的发展趋势
目前Web service有这样几种发展趋势:
- 在使用方式上,
[ RPC ]
和[ soap ]
的使用在减少,Restful架构占到了主导地位。- 在数据格式上,XML格式的使用在减少,json等轻量级格式的使用在增多。
- 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
RPC 的原理
RPC的全称为:Remote Procedure Call 是一种远程进程间通讯协议。
它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。
RPC 的程序包括 5 个部分:
1. User - client 端
2. User-stub - 负责将调用的接口、方法和参数通过约定的协议规范进行编码
3. RPCRuntime - client 和 server 之间的桥梁,负责传输 stubs 传过来的编码
4. Server-stub - 对 client 端发送过来的信息进行解码
5. Server - 服务器端,处理请求并返回结果
这 5 个部分的关系如下图所示
RPC 和 HTTP 的区别
RPC 是远程进程间的通信,即可以通过网络远程调用远端的机器上的某一段代码,至于网络协议是Http、UDP还是TCP等等都可以,传输什么数据格式(json,xml,二进制…)也都可以自己定义。
Http 是一种应用层协议,一般情况下不会涉及到需要对此进行编写代码,只需要利用好其特性即可;
Web Service 由上述所讲,是一种提供服务的方式。基于 Http 或者是 Https 来提供服务,比如RPC 或者是 RESTFUL。
SOAP 协议
SOAP的全称是:Simple Object Access Protocol (简单对象访问协议)。是在计算机网络中用以交换结构性信息来提供 Web Service 的一种协议说明。通常是以XML信息集合作为消息格式,同时它依赖于应用层的 HTTP 或者 SMTP 来进行转发和传输。
SOAP 允许运行在不同的操作系统上(如 Windows 和 Linux)的进程通过 XML 格式的信息相互传递信息。一旦想 HTTP 这种 Web 协议被安装和运行在所有的操作系统上,SOAP 会使得客户端脱离代码语言和平台的限制,调用 Web Service 和接收相应。