理解Web Service三种实现方式

Web Service概念: 根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们通过网络的远程服务器 端,执行客户所提交服务的请求。简单的来说就是服务器端向客户端提供服务。 Web Service实现方式: (1)远程过程调用(RPC) RPC协议就是为了解决不同的客户端跨平台的访问服务器而产生的,最初的Web Service都是采用RPC部署,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 rpc不依赖于具体的网络传输协议,tcp、udp、http等都可以。由于存在各式各样的变换和细节差异,相应的rpc也派生出了各式远程过程通信协 议。由于它的紧耦合性,未来将不会大有作为。

(2)面向服务架构(SOA) 在服务导向架构中,通讯由消息驱动,而不再是某个动作(方法调用)。这种WEB服务也被称作面向消息的服务。 (3)表述性状态转移(REST)

REST的架构设计

   REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速 度,性能、效率和易用性上都优于SOAP协议。

  REST架构遵循了CRUD原则,CRUD原则对于资源只需要四种行 为:Create(创建)、Read(读取)、Update(更新)和Delete(删除)就可以完成对其操作和处理。这四个操作是一种原子操作,即一种 无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。

  REST架构让人们真正理解我们的网 络协议HTTP本来面貌,对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,因 此REST把HTTP对一个URL资源的操作限制在GET、POST、PUT和DELETE这四个之内。这种针对网络应用的设计和开发方式,可以降低开发 的复杂性,提高系统的可伸缩性。

REST的设计准则

  REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则:

  •   网络上的所有事物都被抽象为资源(resource);
  •   每个资源对应一个唯一的资源标识符(resource identifier);
  •   通过通用的连接器接口(generic connector interface)对资源进行操作;
  •   对资源的各种操作不会改变资源标识符;
  •   所有的操作都是无状态的(stateless)。

使用REST架构

  对于开发人员来说,关心的是 如何使用REST架构,这里我们来简单谈谈这个问题。REST不仅仅是一种崭新的架构,它带来的更是一种全新的Web开发过程中的思维方式:通过URL来 设计系统结构。REST是一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或架构。REST架构有很多成功案例,如 Facebook,Yahoo等。

转载请注明地址: http://www.phpddt.com/phpdown/web-service.html

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2014-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

碎片化 | 第四阶段-34-Struts2-Spring重构项目案例-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/z0566pji5vf.html 重构案例 1:hello strut...

28710
来自专栏IT大咖说

支撑百度搜索引擎99.995%可靠名字服务架构设计

摘要 百度搜索引擎是全球最大的中文搜索引擎,致力于向人们提供"简单,可依赖"的信息获取方式。百度网页搜索部架构师郑然为我们分享支撑百度搜索引擎的可靠名字服务架构...

3205
来自专栏EAWorld

即拉即用:你不知道的持续集成的3个Git Hooks详解

作者:Sarah Goff-Dupont 译者:月满西楼 在构建之外添加自动化的手段,是真正用好CI的关键。 如果你已经用了一段时间的Git了,相信你可能听说过...

2904
来自专栏CSDN技术头条

携程实时用户数据采集与分析系统

一、携程实时用户数据采集系统设计实践 随着移动互联网的兴起,特别是近年来,智能手机、pad等移动设备凭借便捷、高效的特点风靡全球,同时各类APP的快速发展进一步...

41510
来自专栏微信公众号:Java团长

12个提高Java程序员工作效率的工具

Java开发者常常都会想办法如何更快地编写Java代码,让开发过程变得更加轻松,更加高效。目前,市面上涌现出越来越多的高效编程工具。团长总结了几个常用的工具,其...

1561
来自专栏程序你好

开发人员学习微服务架构最容易犯五个的错误

601
来自专栏IT笔记

单体转向微服务架构-网关篇(一)

2746
来自专栏一枝花算不算浪漫

[JetBrains注册] 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法

47911
来自专栏携程技术中心

干货 | 携程用户数据采集与分析系统

作者简介 王小波,携程技术中心框架研发部高级工程师,主要负责用户行为数据采集系统及相关数据产品研发设计工作。之前主要从事互联网广告、RTB相关系统研发和设计工作...

3678
来自专栏重庆的技术分享区

聊聊用于构建微服务的工具和技术

原文地址:https://dzone.com/articles/tools-and-techniques-to-build-microservices

2006

扫码关注云+社区