63 votes

Quelles sont les différences entre les choix de middleware Scala?

Remarque: Malheureusement, cette question a été fermé, mais je vais essayer de le maintenir pour si quelqu'un arrive avec la même question.

J'ai été à la recherche d'une bonne solution pour le développement d'un service de Scala qui va s'asseoir entre les appareils mobiles et les services web existants.

La liste actuelle des options viables sont:

Il y a probablement plus d'options là-bas. Comment peut-on décider lequel utiliser? Quels sont les traits (excusez le jeu de mots ;-) d'un bon Scala middleware choix. D'un côté, je voudrais aller pour Akka, car il fait partie de la TypeSafe Scala pile, mais de l'autre, quelque chose comme Récupérer un riche ensemble de bibliothèques et fait de la plomberie si facile. Spray a l'air sympa et simple à utiliser.

Des conseils, des idées ou de l'expérience serait grandement apprécié. Je suis sûr que quelqu'un, il doit y avoir une certaine expérience avec l'un de ces, ils ne ont pas l'esprit de partage.

Mise à JOUR:

J'aimerais que cette question soit rouvert. Une bonne réponse à cette question sera d'aider les nouveaux Scalateers pour éviter les pièges liés.

Mise à JOUR 2:

Ce sont mes propres expériences depuis posant cette question:

Récupérer - j'ai utilisé de la Récupérer pour un projet, et il est solide comme un roc.

Spray - Dans mon dernier projet, je suis à l'aide de Pulvérisation et je suis très heureux. Les dernières versions sont construites sur Akka 2 et vous pouvez l'exécuter directement avec la bombe de peinture de la bibliothèque qui supprime la nécessité d'un serveur web. Aérosol est un ensemble de bibliothèques, plutôt que d'un cadre et est très modulaire. L' Apprendre au sujet de Pulvérisation: RESTE sur Akka vidéo donne un bon aperçu, et ce blog à Cakesolutions montre un très beau approche du développement et de l'architecture.

Mise à JOUR 3:

La vie se déplace assez vite. Si vous n'avez pas à s'arrêter et à regarder autour de temps en temps, vous pourriez manquer. - Ferris Bueller

Ces jours-ci le choix est devenu plus simple. À mon humble avis de Pulvérisation a remporté la bataille. Il est intégré dans Akka pour devenir le prochain Akka HTTP. J'ai été en utilisant la Pulvérisation maintenant sur de multiples projets et peut honnêtement dire que c'est fantastique et mieux pris en charge le logiciel que j'ai jamais rencontrées.

Cela ne répond pas à la question initiale, mais donne au moins une indication sur le pourquoi de Pulvérisation semble être le meilleur choix dans la plupart des cas. Il est extrêmement flexible, non-blocage et très stable. Il a, à la fois côté client et côté serveur bibliothèques et un grand testkit. Aussi, regardez ces stats de se faire une idée sur les performances: les Framework Web de Repères

2voto

Adrian Rodriguez Points 2208

Personnellement, j'ai commencé avec un spray il y a longtemps et essayé tout le reste, il y avait là-bas pour Scala. Tout en Scala, pulvérisation, akka, informes, et scalaz certainement avoir un peu d'une courbe d'apprentissage, une fois que vous commencez à creuser dans et vraiment apprendre comment vous êtes censé utiliser les technologies, qu'elles font sens et j'ai immédiatement vu les avantages en particulier pour le genre de travail que je suis en train de faire maintenant.

Personnellement je pense que rien ne ressort vraiment jusqu'à spray pour la construction de deux serveurs, api rest, les clients http, et tout ce que vous voulez. Ce que j'aime à propos de pulvérisation est qu'ils ont construit avec akka à l'esprit. Il peut avoir été vraiment un début de projet lorsque j'ai d'abord commencé à l'utiliser, mais l'architecture de sens. Ces gars-là savaient ce qu'ils faisaient en termes d'exploiter les avantages de l'utilisation d'un modèle de l'acteur et de ne pas avoir toutes les opérations de blocage.

Alors que les acteurs peuvent prendre un peu de temps pour s'y habituer, je fais comme eux. Ils ont fait de mon des systèmes très évolutif et pas cher à courir, parce que je n'ai pas besoin comme matériel costaud comme dans le passé. De Plus, spray a que le jet-routage DSL afin de faire une api rest est relativement simple tant que vous suivez les règles de ... ne pas bloquer. Évidemment, cela signifie ne pas aller tirer dans apache commons client http pour faire des demandes du client à partir de l'api ou des acteurs, parce que vous allez en arrière à blocage de modèles.

Jusqu'à présent, je suis très heureux avec douchette, typesafe, et akka. Leurs modèles tout naturellement se prêtent à la construction très résistante systèmes qui reviennent sur elles-mêmes si quelque chose devait se produire et que vous prenez un échec-une approche rapide. L'un de boeuf que j'ai avec la douchette (et ce n'est pas de pulvérisation de la faute) est la merde IDE de soutien pour le routage DSL. Je suis absolument d'mépriser Eclipse et ont toujours été une IDÉE de l'utilisateur. Quand j'ai commencé à utiliser le plugin Scala, tout semblait ok. Alors mon routage dsl naturellement évolué dans le plus grand des bêtes. Quelque chose à propos de la façon dont l'IDÉE traite que du code de la merde de son pantalon quand il rencontre quelque chose avec pulvérisation de routage ou de forme. C'est au point où il est inutilisable (j'type 2-3 lettres et attendre 5 minutes pour reprendre le contrôle).

Si, pour toute la pulvérisation de routage ou lourde informe le code, j'ai le feu jusqu'à emacs avec ensime, ensime-sbt, et scala-mode2. Maintenant, si seulement je pouvais obtenir un Cassandra bibliothèque avec la qualité d'astyanax et construit à l'aide d'une architecture non bloquante.

0voto

Alex Points 88

Je n'ai aucune réputation à commenter, mais voici l' alternative la plus infime qui sert l'électricité statique plus rapidement que nginx.

0voto

aglavina Points 11

Ici vous pouvez trouver une grande liste de ressources scala avec une brève description de toutes les alternatives que vous avez énumérées.

De par ma propre expérience, j'utilise Scalatra et il est minuscule, simple et efficace pour des tâches telles que la cartographie uri et les services Web d’appel.

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