2011-10-03 98 views
55

我真的在兩個不同的堆棧之間建立一個大型應用程序。其中一方面有此選項:NodeJS與大型項目的Play Framework

  • Node.js的
    • 表達
    • 咖啡腳本
    • coffeekup
    • 貓鼬/ MongoDB的 或
    • presistencejs/MySQL的


  • 播放框架W /斯卡拉
    • ANORM W/MySQL的
    • 或MongoDB的

Node.js的路徑是吸引我,因爲我可以寫所有服務器端代碼,coffeescript中的視圖和客戶端代碼,我已經知道了。如果我走下這條道路,我仍然不能100%確定我要走哪條db路徑。貓鼬使得存儲數據變得簡單快捷,但由於考慮到數據模型(非常SQLish),缺乏真正的關係可能會更困難。

Play Framework路徑也很吸引人,因爲我在使用Java時很瞭解該框架,但我對Scala瞭解不多,所以當我通過學習該語言工作時,會對生產力產生影響。 Anorm數據庫訪問層很吸引人,因爲我可以手工編寫SQL,我更喜歡它,並將結果自動映射到對象,從而節省了大量的工作量。

我一直傾向於node.js,但我沒有出售最好的數據庫訪問層使用。任何人都有任何這方面的經驗,並可以分享一些見解?

回答

46

您選擇的堆棧應該取決於您的應用程序的需求。讓我們來看看遊戲與節點爲自己的長處:

節點

  • 實時應用(聊天,飼料)
  • 事件驅動的架構
  • 可以執行客戶端 - 服務器的職責(如服務文件),但不太適合這個
  • 數據庫管理,測試工具等,可以作爲額外的軟件包

玩!

  • 客戶端 - 服務器應用程序(網站,服務)
  • 無共享架構
  • 可以進行實時的職責(如WebSockets的),但不是非常適合這個
  • 數據庫管理(包括遷移!),測試工具等,建成核心

如果你的應用更緊密地相匹配的傳統的基於網絡的模型,玩的就是可能是你最好的選擇。如果您需要即時反饋和實時動態消息,Node是更好的選擇。

對於大型傳統應用,請認真考慮Play!框架,因爲內置的單元和功能測試以及數據庫遷移。如果納入開發過程中,這些產品會沿着預期工作的最終產品向前發展,並且穩定且沒有錯誤。

+30

你能解釋爲什麼Play Framework不適合實時工作嗎? Play Framework基於事件驅動的服務器架構。 – Jonas

+2

Play Framework構建在客戶端請求服務器體系結構上。可以使用continuation進行異步操作,Play Framework有使庫更容易的庫;它的優勢在於短暫的請求生命週期(即傳統的Web請求)http://www.playframework.org/documentation/1.2.3/asynchronous – Mike

+27

然而,我認爲Play 2.0非常適合實時職責 - 重新一些[播放2 WebSocket示例/文檔](https://github.com/playframework/Play20/wiki/ScalaWebSockets)。 – KajMagnus

13

有比較web框架時應該考慮的10個大類:

  1. 瞭解:起步,開始上升,整體的學習曲線。
  2. 開發:路由,模板,i18n,表單,json,xml,數據存儲訪問,實時網頁。
  3. 測試:單元測試,功能測試,集成測試,測試覆蓋率。
  4. 安全:CSRF,XSS,代碼注入,頭文件,身份驗證,安全公告。
  5. Build:編譯,運行測試,預處理靜態內容(sass/less/CoffeScript),包。
  6. 部署:託管,監控,配置。
  7. 調試:步步調試器,分析器,日誌記錄,
  8. 量表:吞吐量,延遲,併發性。
  9. 維護:代碼重用,穩定性,成熟度,類型安全,IDE。
  10. 分享:開源活動,郵件列表,流行度,插件,商業支持,工作。

查看我的演講Node.js vs Play Framework,詳細瞭解這兩個框架在這10個維度中的對比情況。

+2

這絕對是一次很棒的演講,但我對你沒有提到Play完全可用於Java而感到有點驚訝,我覺得它可以增加對很多人的吸引力。 – Nepoxx

+1

@Nepoxx:這次演講是在Scala會議上討論的,所以我專注於Play/Scala,但正如你所說,Play也可以用於Java。 –