`

REST概述(转)

 
阅读更多

1.REST究竟是什么?是一种新的技术、一种新的架构、还是一种新的规范?

REST即表述性状态转移,英文全称Representational State Transfer,是Roy Fielding博士在2000年他的博士论文中提出的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST是一种架构风格,它既不是新技术,也不是新的规范。REST利用了HTTP协议提供的几个方法来实现了网络资源的增删改查。

 

2.REST与传统的Web Service究竟有没有本质的区别?如果Web Service已经足够好了,为什么还会有REST?作为世界上最成功的分布式应用架构风格,它是为运行在互联网环境的分布式超媒体系统量身定制的,它究竟有哪些优势?

传统的Web Service指的是SOAP Web服务,两者的区别极大。

SOAP即Simple Object Access Protocol,它是一个协议规范,基于XML格式,而REST只是一种架构风格,采用XML或JSON等交换格式都可以。

REST简单、清晰,而SOAP则比较复杂,而且SOAP协议有很多标准的扩展协议规范,比如WS-Security、WS-Routing、WS-Referral等等。

REST很好理解,且极易上手;不过由于它缺乏标准,因此只被看作是一种架构方法。而SOAP是一个工业标准,它具备良好定义的协议,以及一套良好确立的规则,在大型和小型系统中均有采用。

企业级应用通常会考虑SOAP,而互联网应用则通常考虑用REST。

 

3.从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:1.分布式对象(Distributed Objects,简称DO)、2.远程过程调用(Remote Procedure Call,简称RPC)、3.表述性状态转移(Representational State Transfer,简称REST);这三种风格有哪些实例?请举例说明。

分布式对象(Distributed Objects,简称DO)是早期做分布式系统采取的技术,它的实例有:微软的COM/DCOM技术,CORBA技术等。

远程过程调用(Remote Procedure Call,简称RPC),也是早期做分布式系统采取的技术,它是基于C/S模型调用的机制,客户机向服务器端发送调用请求等待服务器应答,是一种典型的请求应答机制,大致过程可以理解为本地分布式对象向本机发请求,不用自己编写底层通信本机会通过网络向服务器发送请求,服务器对象接受参数后,经过处理再把处理后的结果发送回客户端。它的实例有Sun公司的Java RMI(Remote Method Invocation)技术、EJB技术等。

表述性状态转移(Representational State Transfer,简称REST),利用HTTP协议,是目前最适合的技术。

 

4.在互联网中REST占据了统治地位,但在企业内网中却面临着DO和RPC的挑战,为什么?分布式对象DO与REST有哪些差别?RPC与REST有哪些不同?

1)这很正常,REST架构风格在互联网应用中得到广泛验证,但对于企业内网而言,技术还比较新。

2)现有的企业应用要改造成REST,代价太大。

3)DO和RPC太成熟了,旧的习惯主导一切。

分布式对象DO与REST的区别在于分布式对象采用专有协议,REST采用HTTP协议;分布式对象不是跨平台的,REST是跨平台的。

RPC与REST的区别:RPC以动作为中心,而REST以资源为中心;RPC是C/S架构,而REST既可以是B/S架构,也可以是C/S架构。

 

5.在Java 世界中,与大Web Service 相对应的规范是JAX-WS。新的规范是Java RESTful Web Service 简称JAX-RS,JAX-RS能否取代JAX-WS?

JAX-RS不太可能取代JAX-WS,至少短时间内不可能。原因很多,主要阐述两点,一是JAX-WS有自己适用的场景;二是技术是为业务服务的,用JAX-WS能搞定的事,不一定就一定要使用JAX-RS。

 

6.您是否使用过使用Java开发REST式的Web服务经历?请分享下个人经验。

我经常用Java开发REST服务。这几年很多项目都用到了REST服务,尤其是移动互联网应用,通过REST服务暴露接口,供Android终端、iOS终端调用。

用Java开发REST服务,我用的最多的是Jersey,Apache CXF框架也用过,但它显得笨重,用Jersey更加轻量级、高效。

JBoss提供的RESTeasy框架也不错,跟Jersey差不多。

至于REST测试,可以用浏览器,或者编写使用curl命令的脚本,或者用soapui工具等,还可以用Chrome浏览器的REST Client插件等等。

分享到:
评论

相关推荐

    Rest架构概述

    REST(Representational State Transfer,表述性状态转移)是一种网络架构风格,由Roy Fielding博士在他的博士论文中提出。REST以资源为中心,所有网络上的实体都被视为资源,而这些资源通过统一的接口进行访问和...

    rest api 概述

    ### RESTful API 概述 #### 一、RESTful API 的概念 RESTful API 是一种构建网络应用程序和服务的标准方法之一,其全称为 Representational State Transfer(表现层状态转移)。RESTful API 的概念最早由 Roy ...

    Rest 开发API.

    #### REST概述 REST(Representational State Transfer),即表述性状态转移,是一种用于设计网络应用和服务的架构风格。它基于一套简单的原则和规则,利用现有的网络协议和标准来构建灵活且可扩展的分布式系统。...

    arcgis server rest api

    1. **ArcGIS Server概述** ArcGIS Server是Esri的服务器端产品,用于发布和管理地理空间服务。它能够将地理信息系统(GIS)的功能扩展到Web上,使得地理信息可以被广泛共享和使用。 2. **REST API简介** REST...

    ArcGIS Server REST基础教程

    REST API概述** REST是一种网络应用程序的设计风格和开发方式,基于HTTP协议,提供了创建、读取、更新和删除(CRUD)资源的操作。ArcGIS Server REST API 为地图服务、图层、地理处理任务等GIS资源提供了RESTful...

    django-rest-framework 官方文档

    1. **Django REST Framework概述** Django REST Framework是一个强大的和灵活的工具包,它简化了在Django项目中构建Web API的过程。它提供了许多开箱即用的功能,如序列化、认证、权限管理、分页以及各种HTTP方法的...

    Google simple REST client插件

    ### 插件概述 Google Simple REST Client是一款轻量级的浏览器插件,特别适合前端开发者和API测试人员。它提供了一个友好的界面,用户可以在这里输入HTTP请求的各个参数,如方法(GET、POST、PUT等)、URL、请求头...

    activiti-rest.zip

    1. **Activiti 概述**: Activiti 是基于 Java 的 BPMN 2.0 规范的流程引擎,提供了一个强大的模型驱动的接口来设计、部署和执行工作流程。它的核心功能包括流程定义、流程实例的启动和管理、任务处理、信号和事件...

    Vue+Django REST framework 打造生鲜电商项目.docx

    1. 项目概述 本项目的目标是使用 Vue 作为前端框架,Django REST framework 作为后端框架,设计并实现一个完整的生鲜电商项目。该项目将涵盖电商平台的主要功能,包括用户注册、登录、商品浏览、购物车管理、订单...

    django-rest-framework-jwt, Django REST框架的JSON网络令牌认证支持.zip

    django-rest-framework-jwt, Django REST框架的JSON网络令牌认证支持 REST框架JWT认证 Django REST框架的代价为的JSON ...概述这个包提供了对 Django REST框架框架的 JSON网络令牌认证支持。如果你想了解有关JWT的更多

    基于REST风格的RBAC模型研究

    #### 概述 随着互联网技术的不断发展,Web应用系统规模持续扩大,对于访问控制的需求也日益增长。传统的基于角色的访问控制(Role-Based Access Control, RBAC)模型在面对大规模、复杂应用系统时逐渐显露出其局限...

    关于rest接口demo的详解

    一、元数据服务接口概述 元数据管理模块的服务接口分为内部交互接口和外部交互接口,其中内部交互接口采用 XMI 接口方式。XMI 接口提供了一种以 XML 文件方式与元数据库进行元数据交换的手段。元数据管理模块使用 ...

    Activiti-rest所有接口描述

    #### 一、概述 Activiti是一款开源的工作流引擎,用于简化业务流程的实现与管理。Activiti5.18.0版本提供了两个主要的WAR包:`activiti-explorer.war`和`activiti-rest.war`。前者为用户提供了一个图形化的界面来...

    aREST_UI, 面向aREST框架的嵌入式用户界面.zip

    aREST_UI, 面向aREST框架的嵌入式用户界面 aREST_UI 版本 1.1.1概述aREST UI是aREST框架的嵌入式 UI 。 目前与 Arduino Mega合作,由于使用WiFi芯片,WiFi屏蔽和以太网屏蔽功能。 它与Arduino屏蔽和WiFi屏蔽以及Ard

    PB 12.5调用REST

    #### 二、RESTful Web 服务概述 REST(Representational State Transfer)是一种软件架构风格,它基于 HTTP 协议,通过简单的 GET、PUT、POST 和 DELETE 方法来操作资源。RESTful 服务相比 SOAP 服务更加轻量级、...

Global site tag (gtag.js) - Google Analytics