当前位置:  开发笔记 > 编程语言 > 正文

REST在实践中真的可以无国籍吗?

如何解决《REST在实践中真的可以无国籍吗?》经验,为你挑选了1个好方法。

考虑一下情况.

我正在写一个统计分析应用程序.该应用程序有多个层.

    为多种设备类型,桌面,浏览器,移动设备编写的前端UI.

    中间层servlet,为这些前端提供所谓的REST服务.

    后端执行统计处理的极端计算.

    它与另一个后端数据库通信

由于统计分析需要大量处理能力的原因,您永远不会梦想将此类处理委托给前端.

    统计分析包括程序或一系列工作流程步骤.

    某些步骤可能需要如此多的处理能力,您不想重复它们.

    如果你有20个步骤的工作流程,则不能在没有首先执行步骤19的情况下执行步骤20,这不能在没有首先执行步骤18的情况下执行,依此类推.

    存在观察点,例如,统计学家必须在告知客户端进行下一步骤之前检查步骤3,7,9,14,19的结果.

    这些步骤中的每一步都是对REST服务的所谓请求,以告诉后端超级计算机逐步在内存中建立统计模型.

    有许多工作流程.某些工作流程可能偶然会共享步骤结果.例如,流[干]:步骤[7]可以共享流[湿]:步骤[10].由于涉及的处理量很大,我们绝对不会重复可能偶然已经由另一个流程完成的步骤.

因此,您可以看到,在所设计的所谓REST服务中,每个请求都不可能独立于任何先前的请求.

因此,以下陈述的真实性如何?

所有REST交互都是无状态的.也就是说,每个请求都包含连接器理解请求所需的所有信息,与之前可能存在的任何请求无关.

显然,我描述的应用程序要求请求依赖于先前的请求.关于这个应用,我可以看到三种可能性.

我的应用程序不符合REST,因为它无法满足无状态请求.它可能使用JAX-RS框架,但是使用JAX-RS和REST的所有陷阱并不能使它成为REST,仅仅因为它无法通过无状态标准.

我的应用程序设计糟糕 - 即使工作流程需要5到15分钟,我也应该忽略试图避免重新计算统计模型的时间和财务成本.只要确保不依赖以前的请求.必要时重复昂贵的步骤.

无国籍标准已过时.我对REST的理解已经过时/有缺陷,因为REST社区一直忽视这个标准.

我的应用程序被认为是RESTful吗?

新问题:ISO 9000

最后,如果我的应用程序不完全被认为是RESTFul,是否需要省略所有对"REST"的引用才能通过ISO 9000认证?

新编辑:

REST-在片

好的,我的同事和我已经讨论过这个问题,并决定在零碎的阶段中调用这样的架构/模式REST-in-piece = REST.



1> Raymond Hett..:

ISTM,你对无国籍状态的阅读太多了.REST API支持传统的CRUD操作.CouchDB的API 是一系列无状态事务如何更新DB状态的很好的例子.

您的任务是确定资源是什么以及它们之间的"状态转移".工作流中的每个步骤都是不同的状态转移,由不同的URI标记.每次更新/更改资源都有一个POST/PATCH或幂等PUT或DELETE操作.

如果你想更好地了解什么是RESTful的意义以及每个设计选择背后的原因,我建议花一个小时阅读Roy Fielding的论文第5章.

在做出设计选择时,只需考虑RESTful设计的原则是什么.设置你的设计,以便查询是安全的(不要改变状态),并且它们是以可收藏,可缓存,可分发等方式完成的.让工作流程中的每一步都跳转到具有不同URI的新状态,以便用户可以备份,分支出不同的方式等.整个想法是创建一个可扩展,灵活的设计.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有