`
un_overload
  • 浏览: 17055 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

REST的主要优势到底是什么?

阅读更多
http://www.kingofcoders.com/viewNews.php?type=newsJava&id=545&number=5964057269434128103825877030455951456283137649469852330133279774820548862527573569702716134012495540

在JavaEye论坛上回答网友joyjiang的疑问:“REST的优势到底是什么?开发效率?文档的管理?url的直观?还是其它的什么优势呢?”

REST的主要优势在我看来其实在于它是一种对于服务器的更加有效的抽象方式。

对于基于网络的应用来说,你怎么样看待服务器,就会产生什么样的架构风格,随之产生与该架构风格相关的交互模式。

RPC架构风格将服务器看作是由一些过程组成,客户端调用这些过程来执行特定的任务。SOAP就是RPC风格的一种架构。过程是动词性的(做某件事),因此RPC建模是以动词为中心的。

分布式对象架构风格认为服务器是由一些对象和对象上的方法组成,客户端通过调用这些对象上的方法来执行特定的任务。并且客户端调用这些对象上的方法应该就像是调用本地对象上的方法一样,这样开发就可以完全按照统一的面向对象方法来做。但是很可惜,这样的抽象并不是很有效,因为分布式对象与本地对象存在着巨大的本质差别,想要掩盖这些差别很多时候甚至是有害无益的。

REST架构风格并没有试图掩盖这些差别,而是将服务器抽象为一组离散资源的集合。资源是一个抽象的概念,而不是代表某个具体的东西。注意:要真正理解REST,就一定要增强自己的抽象思维能力,充分理解到资源是抽象的。如果完全不具有抽象思维的能力,一定要将资源与数据库中的一张表或服务器端的一个文件(HTML、Servlet、JSP、etc.)一一挂起钩来,就无法真正理解REST了。资源是名词性的,因此REST建模是以名词为中心的。

上述是目前基于网络的应用的主要的三种抽象方式。这三种不同的抽象方式会严重影响客户端与服务器的交互模式,而不同交互模式的交互效率差别相当大。分布式对象的交互模式很多时候效率很低,因为掩盖了分布式对象与本地对象的差别,很多时候都会导致细粒度的API(需要一再强调才能让一些不明就里的架构初哥按照正确的方式来做设计)。实践已经证明,与RPC和分布式对象相比,REST是一种对于服务器更加有效的抽象方式,将会带来粒度更大和更有效率的交互模式。这样的效果与Fielding设计REST的初衷是吻合的,REST就是专门为交互的性能和可伸缩性进行过优化的一种架构风格。而SOAP在设计的时候优先考虑的从来不是性能和可伸缩性,而是互操作性。除非出现奇迹,否则你种什么,就应该长出来什么。你种的是瓜,长出来的就是瓜;你种的是豆,长出来的就是豆。

Fielding写到:“REST提供了一组架构约束,当作为一个整体来应用时,强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。”

有人认为REST不是面向对象的,其实REST虽然没有分布式对象那么面向对象,在我看来至少比RPC更加面向对象。按照《企业应用架构模式》,以动词为中心建模是什么?是不是就是事务脚本?以名词为中心建模是什么?是不是就是领域模型?这就扯远了,网络通信是否一定需要实现为面向对象的形式,我认为是不需要的。

“REST的主要优势在我看来其实在于它是一种对于服务器的更加有效的抽象方式。”
这句话等于是,我先把一个骨架放在这里,还没有用血肉来充实它,也就是还没有举出具体的实例来。具体的实例以后我们还需要来详细讨论。REST是非常简练的,同时又是一种非常强大的抽象方式,在我看来就是从根本上简化Web开发的一味良药。
分享到:
评论

相关推荐

    REST服务构建的web应用的优势和不足

    REST 服务构建的 Web 应用优势和不足 REST(REpresentational State Transfer)是一种混合架构风格,当前互联网的核心架构风格。基于 REST 服务(RESTful Service)的 Web 应用系统设计任务主要包括:识别并设计 ...

    REST实战(REST in Practice)

    - **高级用例**:书中不仅介绍了基本的REST和HTTP原则,还深入探讨了如何在更复杂的场景中利用Web架构的优势,例如通过超媒体驱动的过程。 - **实际应用**:提供了大量关于如何在日常工作中应用REST的概念和技术的...

    soap和rest比较

    REST的主要优势包括: 1. **简洁性**:REST采用简单的HTTP方法进行请求和响应,减少了通信开销,适用于移动设备等资源受限的环境。 2. **无状态性**:每个请求都包含所有必要的信息,服务器不会保存任何客户端的...

    WCF REST service test

    ### WCF REST服务的优势 - **轻量级**: 相比于其他WCF服务模式,REST服务对客户端的要求较低,不需要WSDL和SOAP。 - **可缓存**: REST服务的响应可以被客户端缓存,提高性能。 - **跨平台兼容**: REST服务基于HTTP...

    flowable-boot-rest_rest_flowableapi_flowableswagger_flowable_flo

    Spring Boot的应用上下文使得这个REST服务能够快速启动和运行,同时提供了微服务架构的优势。 "flowable-boot-rest"可能包含了以下组件和配置: 1. Spring Boot:一个快速开发Java应用的框架,简化了配置并支持热...

    REST 基础(二):Web 服务编程,REST 与 SOAP

    在本篇博客“REST基础(二):Web服务编程,REST与SOAP”中,我们将深入探讨两种主要的Web服务编程模型:Representational State Transfer (REST) 和 Simple Object Access Protocol (SOAP)。这两种技术都是用于构建...

    Rest架构概述

    REST架构的主要优势包括以下几点: 1. 无状态性:在REST架构中,每个请求都包含执行操作所需的所有信息,无需保存会话状态。这大大降低了服务器的负担,提高了系统的可伸缩性,同时也提高了系统的可靠性和效率。 2...

    REST开发指南

    **RESTful Web 服务** 作为一种更简单的替代方案,相较于 SOAP(Simple Object Access Protocol)具有以下优势: - **简洁性**:REST 使用标准 HTTP 方法(GET、POST、PUT、DELETE 等)进行操作,无需额外封装。 - *...

    面向服务的架构SOA分为2种 SOAP即Webservice和REST

    "什么是REST,符合REST的API叫RESTful"这个文件可能进一步阐述了REST的基本原则和特性,以及如何设计符合REST原则的API。RESTful API强调状态转移,通过改变资源的状态来完成业务逻辑,而且要求接口有自解释性,即...

    InfoQ_ 深入浅出REST.pdf

    在介绍REST之前,作者提到了围绕“什么是实现异构应用间通信的最佳方式”的争论。虽然当时基于SOAP、WSDL和WS-*规范的Web Services占据主流地位,但仍有声音支持REST。这部分内容反映了当时技术界对于不同通信协议的...

    基于 REST 的 Web 服务:基础

    REST(Representational State Transfer,代表性状态转移)是一种网络应用程序的设计风格和开发方式,主要用于构建Web服务。这种设计模式强调简洁、直接的交互方式,以提高效率和可扩展性。REST的核心思想是将Web...

    SOAP to REST_library_

    标题中的"SOAP to REST_library_"表明了我们讨论的主题是关于将SOAP(Simple ...对于那些希望现代化旧的SOAP服务,或者希望利用RESTful架构优势的开发者来说,这个"SOAP to REST_library_"是一个非常有价值的资源。

    rest-interface.rar_quantum computing_rest_rest interface

    在本压缩包文件"rest-interface.rar"中,主要探讨了REST接口在Dwave量子计算公司的Onion web服务1.0.2版本中的具体实现和规范。 Dwave是一家专注于量子计算的公司,他们的技术旨在解决传统计算机难以处理的复杂问题...

    rest 论文 英文原版

    Java 是一种广泛使用的编程语言,在实现 RESTful 服务方面具有显著优势。Spring Boot、Jersey 等框架提供了强大的工具集,使开发者能够快速构建高效、可靠的 RESTful 服务。通过这些框架,开发者可以轻松处理 HTTP ...

    django rest framework开发生鲜电商

    总结起来,"django rest framework开发生鲜电商"这个项目是利用Django REST framework强大的API构建能力,结合Vue.js的前端优势,来打造一个高效、用户友好的生鲜电商系统。通过理解并掌握这两个技术,开发者能够...

Global site tag (gtag.js) - Google Analytics