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
分享到:
相关推荐
许多安全专家和组织都依赖这个扩展来协调 Burp Spider 和 Scanner 的工作。 入门(或“如何运行 burp-rest-api”) 下载最新的burp-rest-api JAR(例如burp-rest-api-2.1.0.jar )和启动器burp-rest-api.{sh,bat}...
JasperReports服务器的Rest Client 使用此库,您可以轻松地编写Java应用程序,该Java应用程序可以以一种非常简单的方式与一台或多台JasperReports服务器同时进行交互。 库为用户提供了非常友好的API,它最大程度地...
Boomerang允许您在项目中组织SOAP和REST服务,并在集合中组织请求。 它还可以更新WSDL并导入序列化的XML。 我们在Boomerang中集成了一些惊人的功能,它们将提供合适的结果并将您的项目提升到新的高度。 特征: ★...
Organize:使用Postman Collections为更有效的测试及集成工作流管理和组织APIs document:依据你创建的Clollections自动生成API文档,并将其发布成规范的格式 collarorate:通过同步连接你的team和你的api,以及权限控制...
这些样本按类别和常见用法示例进行组织,类似于。 您可以直接从命令行运行每个示例。 要求 Ruby 2.5.0或更高版本 从命令行运行示例 克隆此存储库: $ git clone ...
如果您的WordPress JSON提要被自定义为包括现成的WordPress JSON API安装中未包含的字段,则可以使用适合您的组织的Transformer / POJO对构造WordPressClient的实例。 包括这个JAR 将此依赖项添加到您的Maven
具有DJANGO REST FRAMEWORK的简单CRUD API 是用于构建Web API... 端点应该在逻辑上围绕集合和元素进行组织,这两者都是资源。 在我们的示例中,我们只有一个资源movies ,因此我们将分别使用以下URL- /movies/和/movie
在线考试系统是一种基于互联网的教育技术工具,用于组织、管理和实施在线考试。这种系统通常由软件应用程序支持,为学生和考生提供了在网上参加考试的机会。在线考试系统可以用于各种教育和培训场景,包括学校教育、...
:flag_in_hole: @ brigad / redux-rest-easy ... 我们的状态根本不是有组织的,访问它的过程是混乱且容易出错的 我们有一个巨大的缓存问题:有时执行不必要的请求,有时不执行本应执行的请求 我们无法知道给定组件是
REST框架 此存储库包含开发的插件,以简化将REST和GraphQL服务开发到Odoo中的过程。 可用插件 添加在 版本 概括 ... OCA,或,是一个非营利性组织,其任务是支持Odoo功能的协作开发并促进其广泛使用。
具有DJANGO REST FRAMEWORK的简单CRUD API 是用于构建Web API的功能强大且灵活的工具包。... 端点应该在逻辑上围绕集合和元素进行组织,这两者都是资源。 在我们的例子中,我们只有一个资源movies ,因此
Profile Rest API
我们建议使用组织的开源 轻量级的mongo服务器,带有用于SNOMED CT快照视图的rest API,由MEAN堆栈(Node.js,Express&MongoDB)。 该存储库现在还提供了Docker配置,以使其更易于使用和安装。 API文档 可以在以下...
基于RBAC模型权限控制的中小型应用的基础开发平台,前拆分,替代采用django + django-rest-framework,前端采用vue + ElementUI,移动端采用uniapp + uView(可发布h5和小程序)。 JWT认证,可使用simple_history...
具有DJANGO REST FRAMEWORK的简单CRUD API ... 端点应该在逻辑上围绕集合和元素进行组织,这两者都是资源。 在我们的例子中,我们只有一个资源movies ,所以我们将分别使用以下URL- /movies/和/movie
Node Rest API 安装 npm install所有依赖项 启动mongo服务器 在db.js中更改mongo连接URL 种子组织- node seed-org.js 运行服务器- node server.js 蜜蜂 / api / auth / register-注册新用户并获得令牌 / api / ...
是一种用于组织资源的架构风格,当应用于基于 HTTP 的服务时,允许构建无状态、解耦、可扩展的服务。 HTTP 方法、HTTP 标头和 MIME 类型都允许开发人员实现 REST 风格。 框架之类的 和 可用于加速尝试实现 RESTful ...
Django-Vue-管理员平台简介Django-Vue-Admin是一套完整开源的快速开发平台,无需保留给个人及企业免费使用。前端采用ruoyi-ui,Vue,Element UI。...部门管理:配置系统组织机构(公司,部门,小组),树
美国重构行动组织(Operation Refactor America)与任何政府机构都不相关,但我们的目标是为公民提供透明数据。 只有一小部分政府机构提供公共API,这些API通常记录较差,它们建立在古老的REST架构上,并且包含分散...
(用户/设置/ API密钥)组织ID显示在“ +创建新的API密钥”按钮的正上方。 将用于API域。 整个平台都在testnet上运行。 这意味着您不必使用自己的资金来测试平台。 这是一个让您熟悉新系统,下达散列功率订单并...