40 votes

Choisir un framework web Scala

Je suis sur le point de commencer un projet pour une application web qui doit s'exécuter sur un serveur Tomcat. J'ai décidé d'aller pour Scala - l'autre alternative où je travail Groovy - essentiellement pour le type de sécurité. Je suis maintenant confronté à la tâche de choisir les bons outils pour le travail.

Le projet, j'ai besoin de développer des seront accessibles que via une API JSON. Il va interagir à la fois avec sa propre base de données et avec deux services externes, qui exposent respectivement un JSON et XML API. J'aurai aussi besoin d'être en mesure de planifier périodique des emplois où ma demande d'exécuter diverses synchronisation des tâches avec ces services externes.

Pour la base de données, je voudrais être en mesure de définir mes modèles de Scala et de générer automatiquement le schéma. Si le besoin de changer mes modèles, je voudrais avoir les migrations de le gérer.

Pour cette application, je suis en train d'évaluer Ascenseur, Jouer! 2 et Scalatra.

  • L'ascenseur était mon premier choix. Il est le plus mature des trois projets, et semble être considérée comme hautement sécurisé (je ne veux pas faire de compromis sur la sécurité). En outre, il dispose ce qui semble être le meilleur JSON de la manipulation de la bibliothèque en Scala. Encore, après avoir tenté sa chance un peu avec elle, je ne suis pas sûr que ce serait le bon choix. La documentation n'est pas exactement le meilleur que j'ai vu. En outre, Record de + Squeryl me semble une meilleure abstraction que Mappeur, mais la documentation pour cet usage est encore plus rare. Enfin, bien que l'Ascenseur peut certainement être utilisé pour créer un service web, il semble que sa vraie force réside dans l'état de la manipulation, et donc je ne suis pas convaincu que la complexité supplémentaire est nécessaire pour mon projet.

  • Jouer! 2 semble avoir une meilleure documentation, et semble plus familier pour moi (je viens d'un Django d'arrière-plan). Encore une fois, par défaut d'abstraction de base de données n'a pas vraiment d'apaiser moi: ANORM s'appuie sur SQL, ce qui n'aide pas à la vérification de type. Je dois utiliser Squeryl de toute façon, et je ne suis pas sûr de savoir si la documentation pour ce cas d'utilisation est aussi bon. En outre, le déploiement de Jouer! 2 applications est à l'heure actuelle moer compliqué que je le voudrais. On a plus qu'à installer le Jeu! sur le serveur de production, et je ne suis pas sûr que ce est une option où je travaille. Sinon, il existe un plugin pour le faire fonctionner avec des conteneurs de servlets, mais il est très nouveau et je ne suis pas sûr de la façon stable/fiable, il est.

  • Enfin, il y a la possibilité d'utiliser Scalatra. Scalatra semble très facile à mettre en place, et il est conçu exactement pour créer des services web. Le compromis est que Scalatra n'offre pas beaucoup de fonctionnalités. Il n'a pas d'intégrer avec existant Orm ou suggérer comment organiser le modèle de la partie de l'application, et il n'est pas utile dans la conception de cron ou de tâches en ligne de commande. Je suis également pas sûr de l'avenir à long terme du projet.

Que pensez-vous serait le meilleur choix pour ma tâche?

25voto

sourcedelica Points 12533

Si vous venez d'un MVC arrière-plan, puis de Jouer sentirez le plus familier. L'ascenseur n'est pas MVC et il faut un certain temps pour envelopper votre tête autour de lui.

Il n'y a aucune raison que vous ne pouvez pas utiliser Scala, avec un Java framework comme Jersey, Spring MVC, Dropwizard, Restlet, RESTEasy, etc. Ou vous pourriez utiliser Scala, avec Graal comme vous pouvez l'utiliser Java avec le Graal. Remarque - Groovy a le type de sécurité à partir de la version 2.0, ce qui est quelque chose à considérer.

Si vous songez à Scalatra, alors n'oubliez pas de Pulvérisation, non filtrée, BlueEyes...

Assurez-vous de vérifier Matt Raible de la comparaison globale des frameworks web. Et ces autres, DONC questions: Scala cadre d'une API Rest Serveur?, Comment implémenter un Service Web REST en utilisant Akka?

10voto

AndreasScheinert Points 1387

Bien que vous ayez déjà indiqué certains candidats, je vous recommande cet exposé de Tim Perrett (auteur de Lift in Action, dans lequel il compare scala webframeworks: http://skillsmatter.com/podcast/scala/scalable-language-web

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X