Wir denken aus mehreren Gründen darüber nach, unseren Rest API-Server (er befindet sich im Webdienst von Symfony PHP) auf Scala zu verlagern: Geschwindigkeit, kein Overhead, weniger CPU, weniger Code, Skalierbarkeit usw. Ich kannte Scala erst nach mehreren Vor Tagen, aber ich habe es genossen, was ich in diesen Tagen mit dem Scala-Buch und all den Blog-Posts und Fragen gelernt habe (es ist nicht so hässlich!)
Ich habe folgende Möglichkeiten:
- Erstellen Sie den Rest API Server von Grund auf neu
- Verwenden Sie ein winziges Scala-Webframework wie Scalatra
- benutze Lift
Einige Dinge, die ich verwenden muss: HTTP-Anforderungen, JSON-Ausgabe, MySQL (Daten), OAuth, Memcache (Cache), Protokolle, Datei-Uploads, Statistiken (möglicherweise Redis).
Was würden Sie empfehlen?
Ich werde Unfiltered empfehlen . Es ist ein idiomatisches Web-Framework, das Dinge "auf Scala-Art" macht und sehr schön ist.
quelle
Schauen Sie sich Xitrum an (ich bin sein Autor), es bietet alles, was Sie aufgelistet haben. Das Dokument ist ziemlich umfangreich. Aus der README:
Xitrum ist ein asynchrones und geclustertes Scala-Webframework und ein Webserver über Netty und Hazelcast:
quelle
Ich würde zwei weitere Optionen hinzufügen: akka mit integrierter JAX-RS-Unterstützung und einfach direktes Verwenden von JAX-RS (wahrscheinlich die Jersey-Implementierung). JAX-RS ist zwar weniger "Scala-y" als andere (basierend auf Anmerkungen zum Binden von Parametern und Pfaden), aber es ist eine Freude, es zu verwenden und alle Probleme der Webdienstcodierung mit minimalem Platzbedarf sauber zu lösen. Ich habe es nicht über akka verwendet, ich würde erwarten, dass es dort ausgezeichnet ist und durch seine fortlaufbasierte Implementierung eine beeindruckende Skalierbarkeit erhält.
quelle
Schauen Sie sich Finch an , eine Scala-Kombinatorbibliothek zum Erstellen von Finagle- HTTP-Diensten. Mit Finch können Sie komplexe HTTP-Endpunkte aus der Anzahl der vordefinierten Basisblöcke erstellen. Ähnlich wie bei Parser-Kombinatoren lassen sich Finch-Endpunkte leicht wiederverwenden, zusammenstellen, testen und begründen.
quelle
Alles gute Antworten bisher. Ein Punkt für Lift ist der RestHelper , mit dem sich kurze, elegante API-Methoden ganz einfach schreiben lassen. Darüber hinaus sollten alle anderen Dinge, die Sie tun möchten, recht einfach in Lift zu implementieren sein. Davon abgesehen ist Memcache möglicherweise nicht erforderlich.
quelle
Ein bisschen spät in der Szene, aber ich würde definitiv empfehlen, das Bowler- Framework für die Erstellung von REST-APIs zu verwenden. Es ist klein, auf den Punkt und automatische Unterstützung für die Konvertierung von Fallklassen!
quelle