玩框架许多控制器(和会话管理)

Play framework many controllers (and session management)

出于纯粹的代码组织目的,我考虑在我的应用程序中创建许多控制器。我发现控制器对象没有产生特殊的开销。快速检查 play 的源代码后,它似乎没有生成任何特别厚的对象,这些对象会导致每个控制器消耗大量内存。

但是我想知道会话是否无缝地跨越控制器,或者它们是否以某种方式绑定到控制器的边界。我也考虑使用 secure social 以防万一。

谢谢!

没有理由认为会话不能跨不同控制器无缝工作。 Play 被设计为尽可能无状态,因此控制器不应该保持任何可能使会话行为不同的状态。

比如真的没有区别:

object Users extends Controller {
    def read(id: Long) = Action { ??? }

    def create() = Action { ??? }
}

object ReadUsers extends Controller {
    def read(id: Long) = Action { ??? }
}

object CreateUsers extends Controller {
    def create() = Action { ??? }
}

显然,这不是我们正在寻找的理想组织结构,但它表达了我的观点。控制器应该以您认为最适合您的代码的方式组织。如果您的控制器对象混合不同的特征,或使用不同的 Action 类型,则 时间会话数据可能会被不同地对待。我对 SecureSocial 不是很熟悉,但是库的选择应该不是很相关。

除非您将数据存储在控制器(或类似的东西)中的 vars 中,否则应该没问题。