NodeJS vs Play Framework适用于大型项目

Jas*_*zek 55 mongodb node.js coffeescript playframework anorm

我真的在两个不同的堆栈之间撕裂,用于构建一个大型应用程序.一方面有这个选项:

  • Node.js的
    • 表达
    • 咖啡脚本
    • coffeekup
    • 猫鼬/ mongodb或
    • presistencejs/MySQL的


  • 使用Scala播放框架
    • Anorm w/mysql
    • 或mongodb

node.js路径对我很有吸引力,因为我可以在coffeescript中编写所有服务器端代码,视图和客户端代码,我已经知道了.如果我沿着这条路走下去,我仍然不能100%确定我会采取哪种数据库路径.mongoose使得存储数据变得快速而简单,但考虑到我想到的数据模型(非常SQLish),缺乏真正的关系可能更难以工作.

Play Framework路径也很有吸引力,因为我在使用Java时非常了解框架,但我对Scala知之甚少,因此在学习该语言的过程中会对生产力产生影响.Anorm数据库访问层很吸引人,因为我可以手工编写我喜欢的SQL,并将结果自动映射到对象,这样可以省去很多工作.

我一直倾向于node.js,但我并没有在最好的数据库访问层上出售.任何人都有任何经验,可以分享一些见解?

Mik*_*ike 46

您选择的堆栈应该取决于您的应用程序的需求.让我们来看看Play vs. Node的优势:

节点

  • 实时应用程序(聊天,提要)
  • 事件驱动的架构
  • 可以执行客户端 - 服务器职责(例如,提供文件),但不适合这一点
  • 数据库管理,测试工具等,作为附加包提供

玩!

  • 客户端 - 服务器应用程序(网站,服务)
  • 无共享架构
  • 可以执行实时职责(例如Websockets),但不适合这一点
  • 数据库管理(包括迁移!),测试工具等,内置于核心

如果您的应用程序与传统的基于Web的模型更匹配,Play可能是您的最佳选择.如果您需要即时反馈和实时动态消息传递,Node是更好的选择.

对于大型传统应用,请认真考虑Play!框架,因为内置单元和功能测试以及数据库迁移.如果纳入开发过程中,走了很长的路向最终产品,作为预期和稳定,无差错.

  • 你能解释为什么Play Framework不适合实时工作吗?Play Framework基于事件驱动的服务器架构. (31认同)
  • 我认为Play 2.0非常适合实时工作 - 这里有一些[Play 2 WebSocket examples/docs](https://github.com/playframework/Play20/wiki/ScalaWebSockets). (28认同)
  • Play Framework基于客户端请求服务器体系结构构建.可以使用continuation进行异步操作,Play Framework有可以使这更容易的库; 它的优势在于请求生命周期短(即传统的Web请求)http://www.playframework.org/documentation/1.2.3/asynchronous (2认同)
  • 如果您对此有疑问,请查看[Typesafe控制台](http://console-demo.typesafe.com/).实时仪表板. (2认同)

Yev*_*man 13

在比较Web框架时,您应该考虑以下10个主要类别:

  1. 学习:入门,提升,整体学习曲线.
  2. 开发:路由,模板,i18n,表单,json,xml,数据存储访问,实时Web.
  3. 测试:单元测试,功能测试,集成测试,测试覆盖.
  4. 安全:CSRF,XSS,代码注入,标头,身份验证,安全建议.
  5. 构建:编译,运行测试,预处理静态内容(sass/less/CoffeScript),包.
  6. 部署:托管,监控,配置.
  7. 调试:逐步调试器,分析器,日志记录,
  8. 规模:吞吐量,延迟,并发性.
  9. 维护:代码重用,稳定性,成熟度,类型安全性,IDE.
  10. 分享:开源活动,邮件列表,流行度,插件,商业支持,工作.

查看我的演讲Node.js与Play Framework,详细了解这两个框架如何在这10个维度上进行比较.

  • 这绝对是一个很好的演讲,但我有点惊讶你没有提到Play完全可以使用Java,我觉得它可以增加它对很多人的吸引力. (2认同)