RESTful Web Services到底是干什么的啊~

作者&投稿:宠郎 (若有异议请与网页底部的电邮联系)
什么是RESTful Web Service~

1. 什么是Restful 其实早在web service概念产生前就有了restful的概念,或者说restful是和Http一起诞生的。 可以参阅 Roy Fielding 的论文“Architectural Styles and the Design of Network-based Software Architectures”, 我本身并没有读过。 Restful的意思是‘宁静的’,你可以理解为‘简约而不简单’,或者‘和谐的’。一个协议只有足够的简约才有扩展性和生命力,复杂的东西往往伴随的是大量bug和规模膨胀后的不可控。 Restful就是Http的本质,仅仅是一个资源URI,和Get,Post,Put,Delete四种操作。一切Web的行为皆源于此。 所以早期的网站,或者说是静态的网站的都是Restful的,如果广义的把浏览器获取web page当做一种web service的话,那么他们都提供了Restful Web Service。 所以Restful并不是个陌生的概念,更不是个新的概念,只不过是一直被忽略了。 一样东西之所以被忽略,因为没有对立面, 或者说没有可比较的东西。世界上的概念都是相对的,有了丑才有美,有了胖才有瘦。 同样当仅仅只有restful的时候,便很少有人真正了解restful的意思。 直到有一天,restful的原则被打破,世界上出现了非restful的web行为,我们可以把它称做‘RPC-style’的web service。
2. RPC-style RPC是个大家都很熟悉的东西,remote procedure call,就是说我要调用其他机器上的程序就象调用我本机的函数一样。 早期的做法开个socket端口,把参数传过去,然后执行完再通过socket把结果传回来。 这样的缺点是就是不同的解决方案的传参数和结果的协议不同,大家之间没发通用,还有就是可能无法穿越防火墙。 直到XML技术诞生,用XML来规范接口,并且XML文档本身就是纯文本可以方便的通过Http端口传输,这样就大大的方便了在web互相之间的调用。 于是Web Service的概念诞生了,而这种Web Service是‘RPC-style’的。
3. Http 顺便聊一下Http协议,Http诞生就是为了进行Web访问,用来传输Html文档的。不过他的能力远远大于此。 Http本身就是个envelope协议,他并不管envelop里面装的是什么,所以其实你可以通过http传输任意数据(图片,音乐),只要可以将它编码成文本(如用base64)。 Http本身规定了4种操作,可是他并没有强制服务器真正的行为。比如你通过Http发出的Get指令,服务器在收到这个指令后可以做些完全和Get不相关的事情。 Http的灵活性带来了很多好处,但同时也带来了副作用,Web不再restful,变的有点小乱。
4. ROA 其实RPC-style和Restful看待事物的角度是不同的,大家都说Restful是一种RO,即面向资源的,那么RPC-style应该仍难是传统的OO,即面向对象的。 对于RPC-style而言,Server就是一个对象,这个对象有许多的属性和方法,我们通过http传递参数来调用这些方法,这里http仅仅被用来做为一个传递者,request的真正含义皆在soap envelop中。 对于Restful而言,Server就是个资源的集合,里面有web pages,web services,或其他资源,对于资源的操作是固定的。我们可以用http象访问网页一样访问web service。 对于Web而言,似乎ROA这种架构更能保持web访问的一致性,也更简单。
5. Ajax Ajax出现的初始动机就是我们可以仅仅刷新部分网页,这样更快,也更合理,不然每次都要刷新整个网页。 同时,Ajax的出现也为遵守Restful原则提供了一种很好的solution。 Restful很重要的原则是无状态性,即服务器不会保存http request的上下文。这是很必要的,否则当用户很多时,服务器的负荷会爆掉的。 我们应该在客户端记录request上下文,然后每次发给服务器。 Ajax出现前,每次request都会刷新这个页面,所以很难记录之前request的上下文,现在有了Ajax, 用户不用每次刷新整个页面,所以可以有效的记录上下文。 所以可以比较简单的完成胖客户端-瘦服务器的架构。

我认为,API不能自描述。明显,并非所有的Web Service能做到这一点,但是至少它们有专门用于描述的标准格式。拿我经历的一件有趣的事来说吧,最近一家客户聘请我们使用其Web Service(不是API)开发一个应用。
它们是SOAP,却是巴洛克式的,晦涩难懂。他们为何称其为“Web Service”而非“API”也许有其自己的理由。但是,我的确看到很多网站毫不遮掩地吹嘘他们的API。
所以,不存在绝对的黑与白,很多东西游走于中间的灰色地带。

尽管REST在国内技术领域已算不上什么新鲜名词了,但是关于REST的中文资料并不多见。到目前为止,好像也就只有Roy Thomas Fielding博士论文的中译版。随着《RESTful Web Services中文版》的即将面世,这种REST中文资料奇缺的局面有望得到改善,该书也是目前国内出版的以REST为主题的第一本书籍。鉴于本书的原版也才于2007年5月出版,短短一年间就推出了中文版,不得不由人感叹国内出版社的效率。此外,由于出版商O'Reilly一贯的口碑,本书的质量自然令人期待。《RESTful Web Services》全书对以下3个问题进行了回答:什么是RESTful服务 如何设计和实现RESTful服务 RESTful服务的应用 什么是RESTful服务这是本书前3章的主题。在这部分,作者从客户端的角度对Web服务进行了介绍,并指出了RESTful服务的特别之处。在本书的第一章,《Programmable Web及其分类》。作者将常见的Web服务架构分成3类:REST式、面向资源的架构 RPC式架构 REST-RPC混合架构 决定Web服务属于哪种分类的秘密在于以下两个问题的答案:服务的方法信息是否出现在HTTP方法中? 服务的作用域信息是否出现在URI中? 两个极端的答案:全是和全否,分别对应REST式架构和RPC式架构。处于中间的则是REST-RPC混合架构。对于Programmable Web一词感觉陌生的读者也不必为此介怀,这是一种按Web使用者分类的方式。顾名思义,Programmable Web是指供程序使用的Web,与之对应的另一词Human Web,其使用者即为人类。但是严格的说,人类也是通过程序(如浏览器)来对Web进行浏览,因此,Human Web实际是Programmable Web的特例。本部分的其他两章分别对Web服务客户端的编写和RESTful服务特点进行了介绍,并举例说明了REST的一些重要概念:资源、表示、统一接口。如何设计和实现RESTful服务回答这个问题的第4~9章是本书的核心,而第4章《面向资源的架构(Resource-Oriented-Architecture,ROA)》则是该部分的核心。提出ROA的目的,作者在前言中已经说得非常清楚:我们通过制定这个面向资源的架构(ROA),把来自坊间传言(folklore)的经验提炼为Web服务设计的最佳实践(best practices)。作者这样描述ROA:ROA是一种把实际问题转换成REST式Web服务的方法:它令URI、HTTP和XML具有跟其他Web应用一样的工作方式,令人程序员们容易使用它。在这一章中,作者介绍了ROA的功能组成:资源 资源名称 资源的表示 资源间的连接 以及ROA的功能特性:可寻址性 无状态性 连通性 统一接口 本部分的后续章节谈到了ROA的实践,分别介绍了面向资源的服务设计、服务实现、REST和ROA的最佳实践,以及服务的技术构件。RESTful服务的应用作为本书的最后部分,第10~12章以每章一个专题的形式介绍了RESTful服务的应用。这些专题是:面向资源架构 VS 大Web服务 将Ajax作为REST客户端 REST式服务框架 对于第10章《面向资源架构 VS 大Web服务》,你或许会感到有些奇怪:只不过是架构的比较罢了,怎么算得上是专题应用?如果你认真地读过本书的前言,应该会看出些端倪。本章所讲的内容正是“应用REST”的前提:如何推荐REST?

  REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
  REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
  Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
  Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
    Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
  

RESTful Web Services是什么:

REST的全称是Representation State Transfer,它描述了一种设计Web应用的架构风格,它是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是 RESTful风格的。而符合RESTful风格的Web Services,就是我们所说的RESTful Web Services。

大致理解:就是一些接口。可以发布你得资源。
将资源层面的操作统一接口,便于其他管理软件、管理模块接入。具体如下:
通过统一资源抽象模型,实现了异构资源操作的归一性;
实现了资源访问入口的统一和封装;
实现了各类资源的集中管理;
实现资源管理操作的聚焦,以实现模块的最大化复用。
可以参考参考这个网站:http://www.36wu.com/Service.aspx


高碑店市13880942447: 什么是RESTful Web Service -
化甄仙林: 从表面上看,Web service 就是一个服务应用程序,它向外界暴露出一个能够通过http协议进行调用的应用程序接口.这就是说,你能够用编程的方法通过Http GET来调用这个应用程序.我们把调用这个Web service 的应用程序叫做客户. Web services是建立可互操作的分布式应用程序的新平台. Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性.你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问.

高碑店市13880942447: "SOAP WebService " 和 "RESTful WebService" 的区别和联系 -
化甄仙林: SOAP(Simple Object Access Protocol)简单对象访问协议,是基于HTTP的一种异构系统通信的协议,说白了就是xml文档传输,之所以会有它,就是在于不同语言C,C++,JAVA等语言开发的系统进行通信,是WebService就是基于SOAP协议的,...

高碑店市13880942447: restful和webservice的怎么选 -
化甄仙林: 您好!一下为个人看法,希望能对您有帮助,满意的麻烦给个采纳,谢谢了! 从基本原理层次上说,REST 样式和 SOAP 样式 Web Service的区别取决于应用程序是面向资源的还是面向活动的.例如,在传统的WebService中,一个获得天气预...

高碑店市13880942447: 后端提供给前端restful的接口,前端怎么操作 -
化甄仙林: 主要就是js对数据的操作和对dom的操作. 前端的工作就是切图,展示数据到网页中.那么怎么获取数据呢?以什么格式获取数据呢?都是需要和后台交互的. 后台语言都是不一样的:php,jsp等等,我们前端js的工作就是把他们的数据拿过来显示.

高碑店市13880942447: 如何用Spring 3来创建RESTful Web服务 -
化甄仙林: 本文假定您是熟悉REST基本知识的;param-name&gt: IDE;响应MIME,以及它所支持的操作. 本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services通过REST风格体系架构.Jersey是其中最值得注意的.3是本文编写时的...

高碑店市13880942447: oracle 存储过程 怎么调用 restful -
化甄仙林: restful是一种webservice的技术,用存储过程调用是相当麻烦的,你还不是要考虑这个方案了,直接用java开发一个调用webservice接口的方法,然后在把数据存到数据库中好一些.

高碑店市13880942447: restful怎么实现接口版本管理 -
化甄仙林: 您好,我来为您解答:restful首先要规划.起一个tomcat, 初始化一个servlet 启动你的服务,你的服务也包装在 j2ee服务里面.spring mvc 天然支持 RESTful,正好拿过来作为你的服务接口适配器.如果我的回答没能帮助您,请继续追问.

高碑店市13880942447: 如何用C++实现支持HTTPS的RESTful WebServer -
化甄仙林: HTTPS 其实可以理解为 HTTP over SSL/TLS 嘛先不说方案本身好不好,对于只支持 HTTP 的服务,在前面加一层 Nginx 这种支持 HTTPS 的反向代理(Reverse proxy)就可以了.

高碑店市13880942447: 使用Node.js做 Restful API用什么框架好 -
化甄仙林: Restful风格的WebService正在渐渐取代传统的SOAP, Java 也有很多Restful的框架,很方便简洁,Jersey,restlet,甚至SpringMVC也可以,不得不说Rest让人从Web转型到WebService更容易和方便,当然深入Restful的理论还是发现比较复杂的

高碑店市13880942447: restful哪种实现方式性能最好 -
化甄仙林: 1. 基于RESTful 的几种实现1.1. Rails Ruby on Rails是新兴的敏捷Web开发框架,在动态语言Ruby的支持下,Rails以新鲜的视角告诉我们Web开发是简单而快乐的.Rails对 RESTful Web Service的开发作了极大的封装和简化,这对开发人员来说...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网