google-app-engine - 我应该为基于 Scala 的 Web 应用程序使用 GAE + Lift 吗?

标签 google-app-engine scala playframework playframework-2.0 lift

以前有人问过这样的问题 - 但现在所有的答案都已经过时了。

我期待着在基于 Scala 的网络应用程序上工作。我知道这个问题可以分为两个,但我将它们作为一个发布,因为它们依赖于相同的上下文,并且依赖于所使用的托管平台和框架。

我在 Play 上阅读了多篇(很棒的)辩论!和 Lift,但找不到 Play! 之间的良好比较。 2.1 和电梯。如何确定哪个更适合我的场景(社交网站)?

同样,这个discussion关于如果我使用 Lift 应该使用哪个平台,有一些很好的论据,但它是从 2010 年开始的,看起来已经过时了。推荐的提供者 (stax.net) 已经死了(或者我猜它与 cloudbees.com 合并了)。我个人倾向于 GAE,因为他们上手很快,但不确定问题是否仍然存在:

  1. 对actors的支持(我不确定Akka是否帮我们解决了这个问题)
  2. 请求由不同的 JVM 服务的给定 session ,而不通知正在运行的应用程序
  3. 引用 David Pollak(Lift 的主要作者)的话:

GAE is slow and non-scalable, despite Google's claims (everyone I've spoken with that have tried to scale GAE apps have failed and gone elsewhere). GAE locks you into a tremendously suboptimal storage mechanism. GAE is free, but so is Stax and there are many inexpensive options including SliceHost. Next up, you've got Amazon EC2 and RackSpace. So, I haven't found a good reason for anyone to use GAE. And if there's no good reason to use GAE, devoting a pile of resources to code around the GAE JVM incompatibilities (e.g., no new threads) seems like a waste.

如果我使用 GAE,另一个问题是 缺少 Play! 2.1 支持。我仍然没有看到那个模块。另一个问题是将来难以迁移到其他数据库(虽然我听说迁移到MongoDB应该相对容易)。最坏的情况是退出 GAE 并使用 AppScale。

最佳答案

我个人使用 Lift , Cloudbees , 和 MongoLab作为我大部分项目的首选。我尝试了几种云托管服务无济于事(尤其是 Heroku 和 RedHat。由于您已经引用了 David Pollak 的帖子,我认为我没有尝试过 GAE)。要使用 cloudbees,您只需要一个 sbt plugin .然后就像运行 cloudbees-deploy 目标一样简单。一分钟之内,您的代码就会启动并运行。我被它的简单程度所震撼。我选择 Mongo 主要是因为这个优秀的 g8 template (注意,现在有一个 SQL equivalent )

我真正喜欢 Cloudbees 和 MongoLab 的另一件事是它们都提供免费服务。这对我来说很棒,因为我只在空闲时间从事这些项目,所以我不想在我的想法不成熟时花任何钱。

至于 Lift,我无法将它与 Play 相提并论。我下载/安装了 play,但立即被它的 MVC 关闭了。我觉得 View 优先的方法虽然对我来说很陌生,但似乎是一种更直观、更强大的构建 Web 应用程序的方法。我喜欢 Lift 不会向我隐瞒我确实在开发 Web 应用程序的事实。我经常觉得 MVC 框架试图让所有 HTML/CSS/JS 等保持一定距离。

关于google-app-engine - 我应该为基于 Scala 的 Web 应用程序使用 GAE + Lift 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19240265/

相关文章:

scala - Play Framework : Configuring system properties

google-app-engine - 替代 GAE 上的 ImageIO 类?

eclipse - 如何将外部包添加到 Google App Engine 的 GoClipse 项目?

java - 适用于 GAE 的 MathML 到图像(如 JEuclid)

android - 找不到库 "libmaliinstr.so"

java - CacheException - 反序列化对象时出错 - MyBatis 和 Play

python - 字典 : new entity taking old property? 的 GAE NDB PickleProperty

scala - 为什么 Actor 收到的消息是无序的?

Scala 正确的语法在带有元组的函数文字中使用下划线 ("_")

java - 玩! : How to place property value in groovy expression