Je travaille sur mon deuxième Ascenseur application pour le moment - il est très fortement dans l'Ascenseur sweet spot - très en temps réel, beaucoup de simultanéité.
Le premier que nous avons wimped après quelques jours de lutte avec la DB de la couche (c'est mieux maintenant, je suis amené à croire), et ensuite à Jouer/Scala à la place. Qui maximise la somme des connaissances de notre équipe, et rendent possible la réalisation de date limite. Mais la chaude du code de rechargement assez bien arrêté de passe une fois que notre projet a reçu d'assez grande taille (restent en cours d'exécution hors de la PermGen - c'est un problème permanent avec Scala compilation assez beaucoup n'importe où), et le manuel de jonglerie de choses comme appel de la méthode des paramètres et de l'emplacement de la sécurité dans des endroits différents dans le site a reçu assez encombrant. Nous avons été heureux quand il a été fait - de la même manière que j'ai tendance à trouver Rails 1, l'augmentation de la vitesse a diminué à mesure que le projet la taille augmente, et à la fin c'était tout aussi fastidieux et source d'erreurs comme le fait de travailler dans une Vélocité/Printemps/XML++ quoi que ce soit).
Cette fois, nous avons été engagés à l'élaboration de la façon dont l'Ascenseur est ce qu'il fait, et la bonne façon de faire les choses. Cela a entraîné beaucoup de navigation informelle, par le biais de la liste de diffusion (discussions qui sont en plusieurs versions anciennes sont encore souvent pertinentes), et surtout, une nouvelle éthique de l'équipe. Il a été nécessaire d'internaliser très fortement la devise:
"C'est un sentiment difficile et répétitif. Je parie qu'ils ont fait un moyen plus facile de faire cela."
La mesure de l'Ascenseur n'a jamais déçus. Je ne parle pas, par ailleurs, sur des choses comme le plan du site et de la liste de la concaténation de la syntaxe, vous DEVEZ avoir une assez bonne sur la poignée de la fonctionnelle de la Scala, ou vous ne serez pas en mesure de lire le code source ou même de configurer votre application.
Cela dit, il n'est pas fou IO monades ou quoi que ce soit, juste certaines des expressions communes que vous devez chercher dans quelques semaines de la Scala de toute façon.
Le problème le plus important pour nous a été une lente compiler cycle. Il faut environ 20 secondes pour jetty:run de notre projet, qui est un sentiment différent à Jouer qui (quand elle fonctionne) chaud compile tous vos trucs. D'autre part, nous avons chronométré que l'autre jour, lorsque l'un de nos développeurs se sont plaints à ce sujet, et cela a fonctionné que, bien que Jouer techniquement chaud compilé, la page a fallu 12 secondes pour se charger en Dev mode. Donc il n'y a pas une perte énorme, il se sent juste un peu lent à avoir à sauter à la ligne de commande.
L'ascenseur vous permet de faire des une grande, et il ya beaucoup d'endroits dans notre application, où (parce qu'il est disponible), nous avons dit "Oui, nous avons vraiment préférerait que mis à jour en direct immédiatement à tous les téléspectateurs de la page, au lieu de les découvrir plus tard qu'ils sont à jour (pensez à toutes les fois que vous avez affiché simultanément à quelqu'un, avec la même réponse). La COMÈTE est partout, il s'avère - ce n'est pas un spécialiste des cas d'utilisation, c'est la façon dont les choses devraient fonctionner. Et Soulevez le rend vraiment facile.
Nous aimons aussi la forte, en programmant configurable, modèle de sécurité - une fois que nous avons changé les mentalités "Nous avons à la liste blanche chaque emplacement, et précisant les conditions d'entrée", nous n'avons jamais vu une autre session problème - vous savez, ceux où l'on suppose que l'utilisateur aurait parcouru un certain chemin, et, donc, de savoir tout un tas de paramètres? Comme, un nom d'utilisateur valide et un domaine d'intérêt ou quoi? (Je suis peut être intentionnellement vague). Qui peut être l'un des maladroits choses à propos d'un stateful cadre, que vous allez vouloir avoir utilisable lorsque l'utilisateur accède à une page, au lieu de (par exemple) en exigeant que tous les états se laisse à chaque demande.
Mes plats à emporter à partir de ce regain de tir à l'Ascenseur:
Il en vaut la peine. Non seulement pour créer de l'application que vous essayez de construire, mais de construire l'application que vous ne saviez pas que vous aviez besoin.
Il y a beaucoup de casse-tête, mais pas beaucoup de code. Et quand il fonctionne, il fonctionne vraiment. Il est rapide et propre, et pour tous les miracles qu'il travaille entre le navigateur et le serveur, je n'ai jamais encore vu, il se confondre.