3

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

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

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

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

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

尽管 Google 声称,GAE 速度很慢且不可扩展(与我交谈过的所有尝试扩展 GAE 应用程序的人都失败了,并转向了其他地方)。GAE 将您锁定在一个极其次优的存储机制中。GAE 是免费的,但 Stax 也是免费的,还有许多便宜的选择,包括 SliceHost。接下来,您将拥有 Amazon EC2 和 RackSpace。所以,我还没有找到任何人使用 GAE 的充分理由。如果没有充分的理由使用 GAE,那么将大量资源用于围绕 GAE JVM 不兼容的代码(例如,没有新线程)似乎是一种浪费。

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

4

2 回答 2

5

我个人使用LiftCloudbeesMongoLab作为我大部分项目的首选。我尝试了几种云托管服务都无济于事(尤其是 Heroku 和 RedHat。由于您已经引用了 David Pollak 的帖子,我认为我没有尝试过 GAE)。要使用 cloudbees,您只需要一个sbt 插件。然后就像运行cloudbees-deploy目标一样简单。不到一分钟,您的代码就会启动并运行。我被它的简单程度吓到了。我选择 Mongo 主要是因为这个优秀的g8 模板(注意,现在有一个SQL 等价物

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

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

于 2013-10-08T13:52:32.587 回答
2

这个问题很开放,所以我将分享我关于 Scala Web 应用程序开发的经验和意见,因为它可能会帮助您做出决定。

我使用 Scalatra 和 Scalate 构建了我的第一个 scala Web 应用程序,使用 Jetty 作为服务器。该应用程序托管在 Amazon EC2 实例上,我对此没有任何问题......它自 2011 年底以来一直在运行,只有一个小问题需要 10 分钟才能解决。我发现这是学习在 Web 应用程序中使用 Scala 的良好体验。

http://www.scalatra.org/

Typesafe ( http://typesafe.com ) 似乎选择了 Play 框架,因此对于我的下一个基于 scala 的网络应用程序,我可能会选择 Play。我一直在阅读的关于 Play 框架的书是“Play for Scala”。本月(2013 年 10 月)刚刚发布。

http://www.manning.com/hilton/

我的印象是 Lift 是过去的首选框架,但现在已经转向 Play 框架。

于 2013-10-08T10:58:48.360 回答