Restful Web Service架构风格理解

前言

2021年01月01日,大家元旦快乐!鼠实不易,牛转乾坤,祝大家在新的一年里都给自己画张大饼,然后脚踏实地的做下去。

什么是 Restful Web Service

其实,Restful Web Service是两个元素组成的。一个是web Service,一个是restful。下面开始介绍这两个玩意~

Web Service

  • WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
    WebService 也叫XML Web Service,WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。
    一方面,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。所以前几年包括今天我们所说的SOA(面向服务的架构)都是采用的WebService技术所提倡的设计原则。
  • Web Service的规范
    (1)需要采用客户端-服务器的模式:即服务以接口调用的形式满足跨编程语言跨平台的特性。
    (2)满足通信的无状态性:所谓的无状态性,即从客户端到服务器的每个request都必须包含理解该request必需的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前的request,而不必了解所有request的历史)、可靠性(无状态性减少了服务器从局部错误中恢复的任务量)、可伸缩性(无状态性使得服务器端可以很容易释放资源,因为服务器端不必在多个request中保存状态)。同时,这种规范的缺点也是显而易见的,不能将状态数据保存在服务器上,导致增加了在一系列request中发送重复数据的开销,严重降低了效率。
    (3)缓存规范:为了改善无状态性带来的网络的低效性,客户端缓存规范 出现。缓存规范允许隐式或显式 地标记一个response中的数据,赋予了客户端缓存response数据的功能,这样就可以为以后的request共用缓存的数据消除部分或全部交互,提高了网络效率。但是客户端缓存了信息,所以客户端数据与服务器数据不一致的可能性增加,从而降低了可靠性。
  • webservice 工作流程
    实现一个完整的Web服务工作流程:
    (1)Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;
    (2)Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;
    (3)Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;
    (4)利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;
    (5)Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。

restful由来

由于分布式平台建设的普及,传统的webservice规范已经不能满足当前需求,所以国外的某个大拿在他的了论文中提出了规范的升级。包括统一接口、分层系统和按需代码

  • 统一接口:所谓的统一接口就是指资源的统一,统一使用URI对资源进行唯一标识。那么什么叫资源呢?restful中指的是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或者完全相同,但它们的表现形式不同,被归为不同的资源,需要通过不同的方法进行搜索。所以需要通过统一的uri不同的调用进行区分。这种方式能极大的解耦。
  • 分层系统:各个系统分层,增加伸缩性。
  • 按需代码:REST允许对客户端的功能进行扩展。比如,通过下载并执行applet或脚本形式的代码来扩展客户端的功能。但这在改善系统可扩展性的同时降低了可见性,所以它只是REST的一个可选约束。

HTTP规范和RESTful的URI

  • REST是基于HTTP 的,任何对资源的操作行为都通过HTTP来实现。以往的Web开发大多数用的是HTTP中的GET和POST方法,很少使用其他方法,这实际上是对HTTP的片面理解造成的。
    HTTP不仅仅是一个简单的运载数据的协议,还是一个具有丰富内涵的网络软件的协议,它不仅能对互联网资源进行唯一定位,还能告诉我们如何对该资源进行操作。HTTP把对一个资源的操作限制在4种方法(GET、POST、PUT和DELETE)中,这正是对资源CRUD操作的实现。
  • 由于资源和URI是一一对应的,在执行这些操作时URI没有变化,和以往的Web开发有很大的区别,所以极大地简化了Web开发,也使得URI 可以被设计成能更直观地反映资源的结构 。这种URI的设计被称作RESTful的URI,为开发人员引入了一种新的思维方式:通过URL来设计系统结构。
  • 当然,这种设计方式对于一些特定情况也是不适用的,也就是说不是所有URI都适用于RESTful。

总结

  • webserivce是一种远程调用的技术手段 其中包含几个规范。
  • restful 是对webservice的一个提升~ 一种更优雅的架构风格 而不是标准。
  • 当前项目中用到webservice技术的就算是webserivice的项目。
  • 无状态性也适用于restful的架构风格。无状态则没有了上下文(Context)的约束,做分布式和集群时就更为简单,也可以让系统更为有效地利用缓冲池(Pool),并且由于服务器端不需要记录客户端的一系列访问,也就减少了服务器端的性能损耗。

作者:select you from me
来源:CSDN
转载请联系作者获得授权并注明出处。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值