gpt4 book ai didi

java - REST 在实践中真的可以是无状态的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:02 24 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

10 年前关闭。




Improve this question




考虑情况。

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

  • 为多种设备类型、桌面、浏览器、
    移动的。
  • 提供所谓的 REST 服务的中间层 servlet
    这些前端。
  • 执行统计的极端计算的后端
    加工。
  • 与另一个后端数据库通信

  • 由于统计分析需要大量处理能力的原因,您永远不会梦想将此类处理委托(delegate)给前端。
  • 统计分析包括程序或一系列
    工作流程步骤。
  • 某些步骤可能需要如此多的处理能力,您不会想要
    重复它们。
  • 如果您有 20 个步骤的工作流程,则无法执行步骤 20
    不先执行第 19 步,不执行就不能执行
    首先执行步骤18,依此类推。
  • 有观察点,例如,
    统计员必须在之前检查步骤 3、7、9、14、19 的结果
    告诉客户端继续下一步。
  • 这些步骤中的每一步都是对 REST 服务的所谓请求,以
    告诉后端 super 计算机逐步设置
    内存中的统计模型。
  • 有很多工作流程。某些工作流程可能会偶然共享步骤
    结果。例如,Flow[dry]:Step[7] 可以共享 Flow[wet]:Step[10]。到期的
    对于所涉及的处理量,我们绝对有防止
    重复一个可能偶然已经完成的步骤
    由另一个流完成。

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

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

    All REST interactions are stateless. That is, each request contains all of the information necessary for a connector to understand the request, independent of any requests that may have preceded it.



    显然,我描述的应用程序要求该请求依赖于先前的请求。我可以看到有关此应用程序的三种可能性。
  • 我的应用程序不符合 REST,因为它不能符合无状态请求。它可能使用 JAX-RS 框架,但使用 JAX-RS 和 REST 的所有陷阱并不能使它成为 REST,仅仅因为它不符合无状态标准。
  • 我的应用程序设计得很糟糕 - 我应该忽略试图避免重新堆积统计模型的时间和财务成本,即使工作流需要 5 到 15 分钟。只要确保不依赖于以前的请求。必要时重复昂贵的步骤。
  • 无状态标准已经过时。我对 REST 的理解已经过时/有缺陷,因为 REST 社区一直在无视这个标准。

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

    新问题:ISO 9000

    最后,如果我的应用程序未被完全视为 RESTFul,是否需要省略对“REST”的所有引用以通过 ISO 9000 认证?

    新编辑:

    REST-in-piece

    好的,我和我的同事已经讨论过这个问题,并决定在零碎阶段将这种架构/模式称为 REST-in-piece = REST。

    最佳答案

    ISTM,您对无状态的了解太多了。 REST API 支持传统 CRUD operations . CouchDB 的 API是一个很好的例子,展示了如何通过一系列无状态事务更新数据库状态。

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

    如果您想更好地了解什么是 RESTful 以及每个设计选择背后的原因,我建议您花一个小时阅读 Chapter 5 of Roy Fielding's Dissertation .

    在进行设计选择时,只需考虑 RESTful 设计的原则试图实现的目标。设置您的设计,以便查询是安全的(不更改状态),并且它们以可添加书签、可缓存、可分发等的方式完成。让工作流中的每个步骤跳转到具有不同 URI 的新状态,以便用户可以备份,分支出不同的方式等。整个想法是创建一个可扩展的、灵活的设计。

    关于java - REST 在实践中真的可以是无状态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351963/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com