2011-10-03 40 views
55

Tôi thực sự bị rách giữa hai ngăn xếp khác nhau để xây dựng một ứng dụng lớn. Một mặt có tùy chọn này:NodeJS vs Play Framework cho dự án lớn

  • Node.js
    • bày tỏ
    • script cà phê
    • coffeekup
    • mongoose/MongoDB hoặc
    • presistencejs/mysql


  • Chơi Khung w/Scala
    • Anorm w/mysql
    • hoặc MongoDB

Đường dẫn Node.js là hấp dẫn đối với tôi, vì tôi có thể viết bài mã phía máy chủ, lượt xem và mã phía máy khách trong coffeescript, mà tôi đã biết. Nếu tôi đi xuống con đường này tôi vẫn không chắc chắn 100% mà con đường db tôi sẽ mất. mongoose làm cho lưu trữ dữ liệu nhanh chóng và dễ dàng, nhưng việc thiếu các mối quan hệ thực sự có thể khó khăn hơn để làm việc với các mô hình dữ liệu tôi có trong tâm trí (rất SQL).

Đường dẫn Khung chơi cũng hấp dẫn vì tôi biết khuôn khổ tốt khi sử dụng Java, nhưng tôi không biết nhiều về Scala, vì vậy sẽ có ảnh hưởng đến năng suất khi tôi làm việc thông qua việc học ngôn ngữ đó. Lớp truy cập cơ sở dữ liệu Anorm là hấp dẫn bởi vì tôi có thể viết SQL bằng tay mà tôi muốn, và có kết quả ánh xạ tới các đối tượng tự động, tiết kiệm rất nhiều công sức.

Tôi tiếp tục hướng tới node.js, nhưng tôi không được bán trên lớp truy cập db tốt nhất để sử dụng. Bất cứ ai có bất kỳ kinh nghiệm với bất kỳ điều này và có thể chia sẻ một số cái nhìn sâu sắc?

Trả lời

46

Ngăn xếp bạn chọn sẽ phụ thuộc vào nhu cầu của ứng dụng của bạn. Chúng ta hãy nhìn vào chơi vs Node cho thế mạnh của mình:

Node

  • các ứng dụng thời gian thực (chat, thức ăn)
  • kiến ​​trúc tổ chức sự kiện-driven
  • có thể thực hiện nhiệm vụ client-server (ví dụ như phục vụ file), nhưng không phải rất phù hợp cho
  • quản lý cơ sở dữ liệu này, các công cụ, vv, có sẵn thử nghiệm như các gói thêm

Phát!

  • ứng dụng Client-server (trang web, dịch vụ)
  • Chia sẻ-không có gì kiến ​​trúc
  • có thể thực hiện nhiệm vụ thời gian thực (ví dụWebsockets), nhưng không phải rất phù hợp cho
  • quản lý cơ sở dữ liệu này (bao gồm di cư!), Các công cụ kiểm tra, vv, được xây dựng vào lõi

Nếu ứng dụng của bạn phù hợp chặt chẽ hơn một mô hình dựa trên web truyền thống, Play là có lẽ là lựa chọn tốt nhất của bạn. Nếu bạn cần phản hồi ngay lập tức và nhắn tin động thời gian thực, Node là lựa chọn tốt hơn.

Đối với các ứng dụng truyền thống lớn, hãy xem xét nghiêm túc Play! Khung vì đơn vị tích hợp và thử nghiệm chức năng cùng với việc di chuyển cơ sở dữ liệu. Nếu được tích hợp vào quy trình phát triển, chúng sẽ đi theo chiều dài đường dài về phía sản phẩm cuối cùng hoạt động như mong đợi và ổn định và không có lỗi.

+30

Bạn có thể giải thích tại sao Khung chơi không phù hợp với các nhiệm vụ thời gian thực không? Play Framework dựa trên kiến ​​trúc máy chủ điều khiển sự kiện. – Jonas

+2

Khung chơi được xây dựng trên kiến ​​trúc máy chủ yêu cầu khách hàng. Có thể thực hiện các hoạt động không đồng bộ bằng cách sử dụng các phép tiếp tục và Khung chơi có các thư viện để thực hiện việc này dễ dàng hơn; sức mạnh của nó ngắn trong vòng đời yêu cầu (ví dụ: yêu cầu web truyền thống) http://www.playframework.org/documentation/1.2.3/asynchronous – Mike

+27

Tôi nghĩ Play 2.0, tuy nhiên, rất phù hợp với các nhiệm vụ thời gian thực - tại đây ' tái một số [Play 2 WebSocket ví dụ/tài liệu] (https://github.com/playframework/Play20/wiki/ScalaWebSockets). – KajMagnus

13

Có 10 loại chính bạn nên xem xét khi so sánh các khuôn khổ web:

  1. Tìm hiểu: bắt đầu, đoạn đường nối lên, đường cong học tập tổng thể.
  2. Phát triển: định tuyến, mẫu, i18n, biểu mẫu, json, xml, truy cập kho dữ liệu, web theo thời gian thực.
  3. Kiểm tra: kiểm tra đơn vị, kiểm tra chức năng, kiểm tra tích hợp, kiểm tra thử nghiệm.
  4. Bảo mật: CSRF, XSS, mã tiêm, tiêu đề, xác thực, tư vấn bảo mật.
  5. Xây dựng: biên dịch, chạy thử nghiệm, xử lý trước nội dung tĩnh (sass/less/CoffeScript), gói.
  6. Triển khai: lưu trữ, giám sát, định cấu hình.
  7. gỡ lỗi: từng bước gỡ rối, profilers, khai thác gỗ,
  8. Scale: thông, độ trễ, đồng thời.
  9. Duy trì: sử dụng lại mã, độ ổn định, độ chín, loại an toàn, IDE.
  10. Chia sẻ: hoạt động nguồn mở, danh sách gửi thư, mức độ phổ biến, plugin, hỗ trợ thương mại, công việc.

Kiểm tra bài nói chuyện của tôi Node.js vs Play Framework để biết chi tiết về cách hai khung này so sánh trên 10 thứ nguyên này.

+2

Đó chắc chắn là một cuộc nói chuyện tuyệt vời, nhưng tôi hơi ngạc nhiên khi bạn không đề cập rằng Play hoàn toàn có thể sử dụng được với Java, tôi cảm thấy nó có thể làm tăng sự hấp dẫn của nó đối với nhiều người. – Nepoxx

+1

@Nepoxx: Cuộc nói chuyện diễn ra tại một hội nghị Scala, vì vậy tôi tập trung vào Play/Scala, nhưng như bạn đã nói, Play cũng có thể được sử dụng với Java. –

Các vấn đề liên quan