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?