gpt4 book ai didi

java - 将REST和Play Framework集成到正在开发的LAMP系统中

转载 作者:行者123 更新时间:2023-12-01 14:03:48 25 4
gpt4 key购买 nike

我正在开发一个巨大的系统,该系统正在标准 LAMP 堆栈上开发。长话短说,我们已经犯了太多错误,我们目前的发展方向正在变得不可持续。我们总结的问题:

  • 正在使用自定义且非常基本的 PHP MVC 框架,该框架不强制执行任何结构。
  • 不使用 ORM,允许开发者开发自己的系统。
  • 前端由 Smarty 渲染,此外所有动态交互均通过 jQuery 完成。
  • 我们在系统的某些部分进行了繁重的处理,导致 PHP 失败/速度非常慢。
  • 未使用单元测试
  • REST 仅用于外部系统的某些 API
  • PHP 框架不支持依赖注入(inject)

我不会提及导致系统变得一团糟的其他问题,我认为这些是主要问题。

我想通过引入类似于 Twitter 使用的东西来将系统的开发转向不同的方向 - 将系统拆分为与 REST 连接的模块(如果我的假设是正确的)。我想介绍以下内容:

  • Play 框架(Java/Scala)
  • 通过 REST 将 Play 与现有 LAMP 堆栈连接
  • 将 Apache 切换到 Nginx
  • (最有可能)使用 Angular.js 作为前端。
  • 从长远来看,将整个现有的 LAMP 转换为 Play

我面临的主要问题是:

  • 考虑到 REST 是无状态的,我将如何维护/传递状态?我们当前的 LAMP 显然为此使用 PHP session 。

也欢迎有关此特定情况的任何其他评论。

最佳答案

您想分享什么状态?当前登录的用户?还要别的吗?你想分享什么?不同Play节点之间?在 Play 和您的 LAMP 堆栈之间?

如果状态量很小,并且不敏感(即当前用户可以看到该状态),那么您可以使用 Play 的 session 。游戏 session 是完全无状态的,它们将状态存储在 cookie 中,并对 cookie 进行签名以防止篡改。更多信息请参见:

http://www.playframework.com/documentation/2.2.x/ScalaSessionFlash

如果您为每个 Play 模块使用相同的应用程序 key (应用程序 key 用于签署/验证 session cookie),那么它们都将能够使用该机制共享状态。您甚至可以与现有的 LAMP 堆栈共享该状态,只需在 PHP 中实现 Play cookie 签名算法即可。

如果状态较大,例如您使用它来缓存内容,或者如果您想存储可能敏感的状态,那么像 memcached 这样的东西可能适合您。

关于java - 将REST和Play Framework集成到正在开发的LAMP系统中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102779/

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