104 votes

Cadre Scala pour un serveur Rest API ?

Nous envisageons de déplacer notre serveur Rest API (qui se trouve à l'intérieur du service web, sur Symfony PHP) vers Scala pour plusieurs raisons : vitesse, pas de surcharge, moins de CPU, moins de code, évolutivité, etc. Je ne connaissais pas Scala jusqu'à il y a quelques jours mais j'ai apprécié ce que j'ai appris ces jours-ci avec le livre Scala et tous les articles du blog et les questions (ce n'est pas si laid !).

J'ai les options suivantes :

  • construire le serveur Rest API à partir de zéro
  • utiliser un petit cadre web Scala comme Scalatra
  • utiliser Lift

Certaines choses que je vais devoir utiliser : Demandes HTTP, sortie JSON, MySQL (données), OAuth, Memcache (cache), journaux, téléchargements de fichiers, statistiques (peut-être Redis).

Que recommanderiez-vous ?

87voto

oluies Points 7682

Sans ordre particulier :

22voto

Max A. Points 1916

Je vais recommander Non filtré . Il s'agit d'un cadre Web idiomatique qui fait les choses "à la manière de Scala" et qui est très beau.

15voto

Ngoc Dao Points 699

Jetez un coup d'œil à Xitrum (je suis son auteur), il fournit tout ce que vous avez énuméré. Son doc est assez vaste. De README :

Xitrum est un cadre web Scala asynchrone et en grappe et un serveur web reposant sur Netty et Hazelcast :

  • L'annotation est utilisée pour les routes URL, dans l'esprit de JAX-RS. Il n'est pas nécessaire de déclarer toutes les routes en un seul endroit.
  • Async, dans l'esprit de Netty.
  • Les sessions peuvent être stockées dans des cookies ou dans un cluster Hazelcast.
  • Avec le cache en cours de traitement et le cache en grappe, vous n'avez pas besoin de serveurs de cache séparés.
  • Comet en cours de traitement et en grappe, vous n'avez pas besoin d'un serveur Comet distinct.

7voto

Dave Griffith Points 12923

J'ajouterais deux autres options : akka avec le support intégré de JAX-RS, et simplement l'utilisation directe de JAX-RS (probablement l'implémentation Jersey). Bien qu'il soit sans doute moins "Scala" que d'autres (il s'appuie sur des annotations pour lier les paramètres et les chemins), JAX-RS est un plaisir à utiliser, résolvant proprement tous les problèmes de codage des services web avec une empreinte minimale. Je ne l'ai pas utilisé via akka, mais je pense qu'il est excellent dans ce cas, obtenant une scalabilité impressionnante via son implémentation basée sur la continuation.

3voto

pr1001 Points 8334

Toutes les bonnes réponses jusqu'à présent. Un point en faveur de Lift est son RestHelper ce qui peut faciliter l'écriture de méthodes API courtes et élégantes. En outre, toutes les autres choses que vous voulez faire devraient être assez simples à mettre en œuvre dans Lift. Cela dit, Memcache n'est peut-être pas nécessaire.

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