`
love~ruby+rails
  • 浏览: 849304 次
  • 性别: Icon_minigender_1
  • 来自: lanzhou
社区版块
存档分类
最新评论
阅读更多

JBoss已在月初的JBoss世界大会上正式宣布了它的新项目“REST-*”。

REST-*试图从以下几个方面将自己和WS-*区别开:

WS-*是一组很好的规范,它们定义了实现基于网络的中间件服务所需要的各种协议和信封格式。尽管比起CORBA它已有很大进步,然而它仍然存在一些缺点,而这些缺点正是REST-*试图解决的。主要是:

WS-*不利用HTTP:WS-*使用HTTP作为传输协议。WS-*服务主要使用HTTP作为连接建立的机制,却忽视了其它丰富且久经考验的特性,而正是这些特性促使了Web的成功……由于我们集中关注RESTful原则,所以我们提出的规范将会完全利用HTTP协议的优势,而不是重新发明自己的技术。

WS-*入门的门槛高:WS-*协议栈难于实现,并且,客户端和服务端都要使用复杂的协议栈……我们希望最大限度地降低这套规范的入门门槛。

WS-*依赖于信封格式:WS-*协议栈依赖于SOAP,所有WS-*发送的消息都要遵循信封格式……而HTTP消息已经足够完善,它很简单、健壮、而且非常灵活。

该项目的架构目标是:

低入门门槛:对使用该规范的用户,入门门槛应该足够低。他们应该不需要为了使用规范而安装任何库或者软件包……

通过扩展去描述边界情况:边界情况可能是使得主规范变得复杂的原因之一,它应该描述在一个独立的子规范中,并将它们放在主规范之上。

实用REST:当某规范致力于遵循RESTful原则时,简单性的要求绝不该让步于纯粹的RESTafarian。如果你要使用REST的原则创建更简单的设计,那么这就是你应选择的路。

80/20原则:规范应该保持简单……它应该覆盖80%的常用情况,而边界情况不应该出现在主规范之中……

避免信封格式:只要有可能,就应该避免信封格式……信封格式倾向于在HTTP上打通一个隧道,而不是直接利用HTTP……大多数情况下,HTTP头在传输请求,响应和资源的元数据方面已经足够。

不要扩展数据格式:如果可能,规范就不应该定义新数据格式

根据大会的宣布,JBoss试图建立一个类似于JBoss.org的完全协作的社区,而不是由提供商驱动,为提供商服务的社区 。他们设想着通过开源的方式:

……定义新协议……但是整个这事情的重点之一是记录人们以 RESTful方式工作(包括HTTP和非HTTP)的指导意见和最佳实践,这可能包含安全,管理等。

(顺便提一下,上述引自Mark Little的一段话已经相悖于前面提到的架构目标,因为他提到新协议以及非HTTP的支持。)

Mark认为:

如果最后我们的结果的是一个聚集器,包含指向解决这些那些问题的“标准”方式,那么这已经是一个成功的产出了……开展该工作的原因是因为社区需要它。人们不断提出相同的问题, 虽然有很多书,以及该领域的专家回答了问题,但却没有清晰的答案。在某些情况下,我们可能得到许多不同的答案。这意味着答案不存在吗?不然。然而如果是真正理解REST的人都不同意的答案,对于那些只求使用REST的人来说有何意义呢?这就是REST-*要做的:将社区联系起来,试图产出一些指导原则,当人们需要答案时就有地方可以找到它。

尽管这个新项目试图远离REST和WS的争论:

REST和WS-*孰优孰劣已经在很多文章,博客以及公开邮件列表中争论了很久。这里我们不想再重述那些争论,欲了解更多信息,请在Google上搜索“REST vs. WS-*”

不过,它还是通过引用WS*的一些特性有效地进行了比较,比如,它试图表达WS*很重,而REST是轻量级的。然而,两种标准都可以“手动”实现,(假定都是用HTTP传输的话,)所需的代码量是相同的。再者,一个支持自动混编/拆散以及消息路由的运行时,所包含的代码量也是相同的(比如,RestEasy——它是一款不错的框架,发布版只包含38个jar包)。如果在相同抽象层进行比 较的话,所需的代码两是相同的。讨论该问题的邮件列表还在继续。

因此,毫无疑问,REST*的宣布引起了很多回复,Steve Jones在他的博文REST-*,你能否快成熟中总结得很 好:

REST-*项目的最后产出可能是记录现有的经验,这其中的挑战之一是,很多人并没有真正理解REST是什么,所以当他们要构建更高层的类系统以及实现跨组织间的互操作时,自然会很痛苦 。一部分原因当然来自预付款协议以及迟早验收等方面的问题,但还有一部分原因看起来像是纯粹的势利或者是某些人不愿意分享那些晦涩的知识。

他继续说道:

如果REST是达摩克里斯之剑,能够洞穿现今企业集成的挑战的话,那么记录下这是如何实现的以及相关标准(使让人们更清楚地了解如何进行开发)有什么问题呢?更重要地,人们(比如SAP 或Oracle)可以通过标准的方式创建REST接口,使得服务可以很容易地被其他提供商的解决方案所使用。这个项目可以决定是否要用WADL,以及Atom和AtomPub是否能覆盖所有的企业场景,或者最少包含所有那些重要的标准。(比如,我们不再要对应于于可恶的WS-TX的REST-TX)

不论是REST还是WS,都有其实际的应用场景。问题不应该是哪个更为优越,而应该是他们如何共存,以及在特定场景下谁更合适。另一个重要的方面是不管它们多强大,都要确保所进行的比较是基于有缺点的, 而不是信仰。WS*创建了很多有价值的标准和模式,那想想这些模式能否能应用于REST是否更有意义呢?


查看英文原文:REST-*.org

分享到:
评论

相关推荐

    Advanced-REST-client_v3.1.9

    - **收藏夹**: 支持创建请求的收藏夹,将常用请求组织在一起,便于快速访问。 4. **安全特性** - **OAuth 2.0集成**: 支持OAuth 2.0授权流程,方便测试受保护的API。 - **证书管理**: 允许导入自签名证书或忽略...

    icontrol-rest-api-user-guide-13-0-0.pdf

    ### iControl REST API 用户指南 V13.0 关键知识点解析 #### 一、Representational State Transfer (REST) 概念介绍 - **REST**(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

    Postman-REST-Client_v0.8.1

    - **集合**:用户可以将相关的请求组织成集合,便于管理和分享。这对于团队协作和API文档编写很有帮助。 - **响应查看与验证**:Postman不仅展示HTTP响应,还允许用户验证响应内容,比如检查JSON或XML数据结构的...

    Laravel开发-laravel-5-rest-api-scaffold

    - **MVC模式**:Laravel基于模型-视图-控制器(MVC)设计模式,提供了一种组织代码结构的方式。 - **Artisan命令行工具**:Artisan是Laravel自带的命令行工具,可以用于执行各种任务,如创建迁移、生成控制器等。 ...

    Postman-REST-Client_v0.8.1 (附安装说明)

    - **集合管理**:可以组织相关的API请求为集合,便于管理和共享。 - **自动格式化响应**:自动对JSON和XML数据进行格式化,便于查看和理解。 - **数据导入导出**:支持导入和导出请求集合,方便团队协作。 - **环境...

    chrome插件Advanced-REST-client及配置文件definitions.json

    通过 `definitions.json` 配置文件,用户可以高效地管理和组织不同的 API 环境,进一步提高开发效率。无论是个人项目还是团队协作,ARC 都能提供便利,确保 RestFul 接口的调试和测试工作顺利进行。

    Advanced-REST-client

    你可以按需组织和重命名请求,以保持工作环境的整洁。 4. **自动化测试**:ARC支持创建测试套件,可以批量执行多个请求并评估结果,这对于测试API的完整性和性能非常有用。 5. **环境变量**:定义和使用环境变量,...

    Postman-REST-Client_v4.7.2

    - **收藏夹**:组织和保存经常使用的请求,便于将来快速访问。 - **环境**:管理不同的API测试环境,比如开发、测试和生产环境,每个环境可以有不同的URL和变量。 - **预置请求**:内置常见的HTTP请求,如获取、创建...

    ArcGIS Server 9.3 REST基础教程

    - **层次化**:REST服务支持层级结构,便于扩展和组织。 - **统一接口**:REST服务使用一致的接口进行交互,简化开发过程。 - **ESRI推进对REST的支持**: - ESRI作为GIS领域的领导者,积极采用REST技术,提供了...

    SFDC rest API document

    ### Salesforce REST API 知识点详解 #### 一、引言与概述 Salesforce REST API 是一种基于 HTTP 协议的编程接口,它允许开发者通过简单、标准的方式访问 Salesforce 数据和服务。该文档版本为 32.0(Winter ’15...

    Postman-REST-Client_v0.8.4.14

    2. **集合**:Postman允许组织和管理相关请求为集合,便于测试流程的编排和重复执行。 3. **预置请求**:内置多种常见的HTTP请求,如登录、获取资源等,快速启动测试。 4. **环境变量**:通过定义和管理环境变量,...

    chrome插件Advanced-REST-client及应用配置文件definitions.json

    使用`definitions.json`文件,开发者可以快速地组织和访问常用的API接口,提高开发和调试的效率。在大型项目中,团队成员可以共享这个配置文件,确保所有人都使用相同的接口定义,减少沟通成本。 综上所述,...

    Aggarwal -- Flask Framework Cookbook -- 2014.pdf

    - **MVC架构**:模型-视图-控制器(Model-View-Controller)是一种常用的设计模式,Flask采用了该模式来组织代码。 - **ORM(对象关系映射)**:用于将对象模型映射到关系型数据库中的技术,Flask通过SQLAlchemy实现...

Global site tag (gtag.js) - Google Analytics