web-dev-qa-db-fra.com

NodeJS vs Play Framework pour un grand projet

Je suis vraiment déchiré entre deux piles différentes avec lesquelles créer une grande application. D'une part, il y a cette option:

  • Node.js
    • express
    • script de café
    • coffeekup
    • mangouste/mongodb ou
    • presistencejs/mysql


  • Cadre de jeu avec Scala
    • Anorm w/mysql
    • ou mongodb

Le chemin node.js me plaît parce que je peux écrire tout le code côté serveur, les vues et le code côté client en coffeescript, que je connais déjà. Si je descends sur cette route, je ne suis toujours pas sûr à 100% du chemin que je prendrais. mangouste rend le stockage des données rapide et facile, mais le manque de vraies relations pourrait être plus difficile à travailler étant donné le modèle de données que j'ai en tête (très SQLish).

Le chemin Play Framework est également attrayant parce que je connais bien le framework lorsque j'utilise Java, mais je ne connais pas grand-chose à Scala, donc il y aurait un impact sur la productivité alors que je travaille à l'apprentissage de ce langage. La couche d'accès à la base de données Anorm est attrayante car je peux écrire le SQL à la main que je préférerais et avoir les résultats mappés automatiquement aux objets, ce qui économise beaucoup d'efforts.

Je continue de pencher vers node.js, mais je ne suis pas vendu sur la meilleure couche d'accès db à utiliser. Quelqu'un a-t-il une expérience avec tout cela et peut-il partager ses idées?

55

La pile que vous choisissez doit dépendre des besoins de votre application. Regardons Play vs Node pour leurs points forts:

Node

  • Applications en temps réel (chat, flux)
  • Architecture événementielle
  • Peut effectuer des tâches client-serveur (par exemple, servir des fichiers), mais n'est pas bien adapté à cela
  • Gestion de base de données, outils de test, etc., disponibles sous forme de packages supplémentaires

Jouer!

  • Applications client-serveur (site Web, services)
  • Architecture sans partage
  • Peut effectuer des tâches en temps réel (par exemple, Websockets), mais n'est pas bien adapté pour cela
  • Gestion de base de données (y compris les migrations!), Outils de test, etc., intégrés au noyau

Si votre application correspond plus étroitement à un modèle Web traditionnel, Play est probablement votre meilleur choix. Si vous avez besoin d'une rétroaction immédiate et d'une messagerie dynamique en temps réel, Node est le meilleur choix.

Pour les grandes applications traditionnelles, pensez sérieusement au jeu! Framework en raison de l'unité intégrée et des tests fonctionnels ainsi que des migrations de base de données. S'ils sont intégrés dans le processus de développement, ceux-ci vont un long chemin vers un produit final qui fonctionne comme prévu et qui est stable et sans erreur.

46
Mike

Il y a 10 grandes catégories à considérer lors de la comparaison des frameworks Web:

  1. Apprendre : mise en route, montée en puissance, courbe d'apprentissage globale.
  2. Développer : routage, modèles, i18n, formulaires, json, xml, accès au magasin de données, web en temps réel.
  3. Test : tests unitaires, tests fonctionnels, tests d'intégration, couverture des tests.
  4. Sécurisé : CSRF, XSS, injection de code, en-têtes, authentification, avis de sécurité.
  5. Build : compilation, exécution de tests, prétraitement du contenu statique (sass/less/CoffeScript), package.
  6. Déployer : hébergement, surveillance, configuration.
  7. Débogage : débogueur pas à pas, profileurs, journalisation,
  8. Échelle : débit, latence, simultanéité.
  9. Maintenir : réutilisation du code, stabilité, maturité, sécurité des types, IDE.
  10. Partager : activité open source, listes de diffusion, popularité, plugins, support commercial, emplois.

Consultez mon exposé Node.js vs Play Framework pour une ventilation détaillée de la façon dont ces deux cadres se comparent à travers ces 10 dimensions.

13
Yevgeniy Brikman