以前有人问过这样的问题——但现在所有的答案都已经过时了。
我期待着在基于 Scala 的 webapp 上工作。我知道这个问题可以分为两个,但我将它们作为一个发布,因为它们依赖于相同的上下文,依赖于托管平台和使用的框架。
我已经阅读了关于 Play 的多个(很棒的)辩论!和 Lift,但在 Play 之间找不到很好的比较!2.1 和电梯。我如何决定哪一个更适合我的场景(社交网络网站)?
同样,关于如果我使用 Lift,该讨论对于使用哪个平台有一些很好的论据,但它是从 2010 年开始的,似乎已经过时了。推荐的提供商 (stax.net) 已死(或者我猜它已与 cloudbees.com 合并)。我个人倾向于 GAE,因为他们很快就开始了,但不确定问题是否仍然存在:
- 对演员的支持(我不确定 Akka 是否能帮助我们解决这个问题)
- 给定会话的请求由不同的 JVM 提供服务,而无需通知正在运行的应用程序
- 引用 David Pollak(Lift 的主要作者):
尽管 Google 声称,GAE 速度很慢且不可扩展(与我交谈过的所有尝试扩展 GAE 应用程序的人都失败了,并转向了其他地方)。GAE 将您锁定在一个极其次优的存储机制中。GAE 是免费的,但 Stax 也是免费的,还有许多便宜的选择,包括 SliceHost。接下来,您将拥有 Amazon EC2 和 RackSpace。所以,我还没有找到任何人使用 GAE 的充分理由。如果没有充分的理由使用 GAE,那么将大量资源用于围绕 GAE JVM 不兼容的代码(例如,没有新线程)似乎是一种浪费。
如果我选择 GAE,另一个问题是缺少 Play!2.1 支持。我仍然没有看到一个模块。另一个问题是将来很难迁移到其他数据库(尽管我听说迁移到 MongoDB 应该相对容易一些)。最坏的情况是退出 GAE 并使用 AppScale。