Was sind die Unterschiede zwischen Scala middleware Entscheidungen?
Hinweis: Leider wurde diese Frage geschlossen, aber ich versuche, es zu halten, wenn jemand kommt mit der gleichen Frage.
Ich habe auf der Suche nach einer guten Lösung für die Entwicklung eines service in Scala, die sitzen zwischen den mobilen Geräten und bestehenden web-services.
Die aktuelle Liste der lebensfähigen Optionen sind:
Wahrscheinlich gibt es noch weitere Optionen gibt. Wie wird man entscheiden, welche zu benutzen? Was sind die Merkmale (entschuldigen Sie das Wortspiel 😉 eine gute Scala-middleware Wahl. Auf der einen Seite, ich möchte mich für Akka, denn es ist Teil des TypeSafe Scala-stack, aber auf der anderen, so etwas wie Finagle verfügt über eine Vielzahl von Bibliotheken und lässt Sanitär so einfach. Spray sieht nett und einfach zu verwenden.
Ratschlägen, Einsichten oder Erfahrungen wäre sehr dankbar. Ich bin sicher jemand muss habe einige Erfahrung mit einigen von diesen, dass Sie nicht Geist freigeben.
UPDATE:
Ich würde gerne für diese Frage geöffnet werden. Eine gute Antwort auf diese Frage werden helfen, neue Scalateers zu vermeiden, die im Zusammenhang Fallstricke.
UPDATE 2:
Dies sind meine eigenen Erfahrungen, da diese Frage:
Finagle - ich habe Finagle für ein Projekt und es ist rock solid.
Spray - In meinem neuesten Projekt bin ich mit Spray und ich bin sehr glücklich. Die neuesten Versionen basieren auf Akka 2, und Sie können es direkt mit dem Spray-can-Bibliothek, die beseitigt die Notwendigkeit für einen web-server. Spray ist ein Satz von Bibliotheken, anstatt einen Rahmen und ist sehr modular. Die Erfahren Sie mehr über Spray: REST auf Akka video gibt eine gute übersicht, und dieser blog Cakesolutions zeigt eine wirklich schöne Entwicklung Konzept und Architektur.
UPDATE 3:
Leben bewegt sich ziemlich schnell. Wenn Sie don ' T stop und umsehen, einmal in eine Weile, Sie könnte es verpassen. - Ferris Bueller
Diesen Tagen die Wahl hat, einfacher. Meiner bescheidenen Meinung nach-Spray hat den Kampf gewonnen. Es wird integriert in Akka, um das nächste Akka HTTP. Ich verwende das Spray jetzt an mehreren Projekten und kann ehrlich sagen, dass es toll und am besten unterstützten software, die ich jemals erlebt habe.
Diese keine Antwort auf die ursprüngliche Frage, aber zumindest gibt einige Hinweise darauf, warum ein Spray scheint die beste Wahl in den meisten Fällen. Es ist extrem flexibel, non-blocking, und sind sehr stabil. Es ist sowohl für client-side und server-side-Bibliotheken und eine große testkit. Außerdem haben Sie einen Blick auf diese Statistiken, um sich ein Bild über die Leistung: Web-Framework-Benchmarks
- Vielen Dank für das hinzufügen von finagle @ErnestFriedman-Hill . Wenn Sie könnte, ich würde für Sie lieben, um zu erklären, warum Benutzer markiert diese Frage als nicht konstruktiv. Ich habe nicht verwendet eine der oben genannten Systeme in der Produktion noch, Sie haben verbrachten eine Woche auf die überprüfung Sie und andere, und würde geliebt haben, Einblicke in andere Erfahrungen.
- Im Grunde, weil StackOverflow ist nicht ausgelegt für die Diskussion Fragen. Eine gute Frage ALSO hat eine spezifische, nachprüfbare Antwort, die man nicht offen zur Debatte. Ihnen ist durchaus respektabel Frage, aber es ist einfach nicht das, was SO sehen will. Dies sind drei Beispiele aus den FAQ, dass Sie eigentlich nicht hier Fragen: "Was ist deine Lieblings ______?" "Ich verwende ______ für ______, was verwenden Sie?" "Ich bin gespannt, ob sich andere Menschen fühlen wie ich es Tue." Ihre Fragen zu sein scheint, der eine Art hybrid aus diesen drei Gegenbeispiele.
- Ich kann mich irren, aber vielleicht ist dies eine Frage, die nachvollziehbare Antwort. Als ich diese Frage stellte, landete ich mit Finagle. Das Projekt endete in Ordnung, und läuft wie ein Uhrwerk, aber ich bin immer noch Fragen, wenn ein Akka-basierten service hätte nicht besser sein können. Ich weiß immer noch nicht die Antwort, und hoffe wirklich, dass Sie die Herren betrachten die Wiedereröffnung.
- Einen Tipp, wie man Fragen wie diese etwas gültig ist, Fragen Sie: "was sind die Unterschiede zwischen den beiden frameworks?"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich persönlich begann mit spray vor langer Zeit, und versucht alles, was es sonst noch so gibt war es für Scala. Während Scala, spray, akka, formlos, und scalaz sicherlich haben ein bisschen eine Lernkurve, sobald Sie anfangen zu Graben in und wirklich lernen, wie man Sie benutzen soll, die Technologien, Sie machen Sinn, und ich sah sofort die Vorteile vor allem für die Art von Arbeit, die ich gerade mache.
Persönlich glaube ich, nichts wirklich steht bis zum spray für das Gebäude sowohl Server als auch rest-apis, http-clients, und was Sie sonst noch wollen. Was ich Liebe zu sprühen ist, dass Sie gebaut mit akka in den Sinn. Vielleicht waren es wirklich frühen Projekt-als ich das erste begann es zu benutzen, aber die Architektur, die Sinn machte. Die Jungs wussten, was Sie Taten in Bezug auf die Nutzung der Vorteile der Verwendung eines actor-Modell und nicht mit einer blockierenden Operationen.
Während Akteure könnte ein bisschen gewöhnungsbedürftig, ich mag Sie. Sie haben meine Systeme extrem skalierbar und Billig zu laufen, weil ich nicht brauchen, als bullige hardware wie in der Vergangenheit. Plus, spray hat, dass spray-routing-DSL, so dass ein rest-api ist relativ einfach, solange Sie die Regeln befolgen, die nicht ... blockieren. Das bedeutet natürlich nicht, gehen Sie und ziehen Sie in den apache commons http-client, um client-Anfragen über die api oder Schauspieler, weil Sie gehen zurück auf die Sperrung Modelle.
Bisher bin ich sehr zufrieden mit dem spray, typesafe, und akka. Ihre Modelle einfach natürlich lassen sich Gebäude sehr stabile Systeme, die kommen wieder zurück auf Ihre eigenen, wenn etwas passieren sollte und Sie ein fail-fast-Ansatz. Die ein Rind, dass ich mit dem spray (und es ist nicht spray ist Schuld) ist das verdammte IDE-Unterstützung für die routing-DSL. Ich absolut verachten Eclipse und habe immer eine IDEE, die user. Als ich anfing mit dem Scala-plugin, alles schien ok. Dann meine routing-dsl natürlich entwickelten sich in den Weg größere Tiere. Etwas über die IDEE analysiert, der code macht es scheisse seine Hose jederzeit es trifft auf alles, was mit spray-routing oder formlos. Es ist bis zu dem Punkt, wo es ist unbrauchbar (ich tippe 2-3 Buchstaben, und 5 Minuten zu warten, um wieder die Kontrolle).
So, für jede spray-routing oder schweren unförmigen code, ich Feuer in emacs mit ensime, ensime-sbt und scala-mode2. Nun wenn könnte ich nur ein Cassandra-Bibliothek mit der Qualität des astyanax und gebaut mit einem non-blocking-Architektur.
Hier finden Sie eine große Liste von scala-Ressourcen mit einer kurzen Beschreibung aller alternativen, die Sie aufgelistet.
Aus meiner eigenen Erfahrung, ich benutze Scalatra und es ist klein, effektiv und einfach für Dinge wie uri mapping und Aufruf von web-services.