Zastanawiamy się nad przeniesieniem naszego Rest API Server (znajduje się w serwisie WWW, na Symfony PHP) do Scali z kilku powodów: szybkość, brak narzutów, mniej procesora, mniej kodu, skalowalność itp. Nie znałem Scali aż do kilku dni temu, ale cieszę się tym, czego nauczyłem się ostatnio dzięki książce Scala i wszystkim postom na blogu i pytaniom (nie jest tak brzydki!)
Mam następujące możliwości:
- zbuduj serwer Rest API od podstaw
- użyj niewielkiego frameworka internetowego Scala, takiego jak Scalatra
- użyj windy
Niektóre rzeczy, których będę musiał użyć: żądania HTTP, wyjście JSON, MySQL (dane), OAuth, Memcache (pamięć podręczna), logi, przesyłanie plików, statystyki (może Redis).
Co byś polecił?
Mam zamiar polecić Unfiltered . To idiomatyczny framework sieciowy, który robi rzeczy „na sposób Scali” i jest bardzo piękny.
źródło
Spójrz na Xitrum (jestem jego autorem), zawiera wszystko, co wymieniłeś. Jego dokumentacja jest dość obszerna. Z README:
Xitrum to asynchroniczna i klastrowana platforma internetowa Scala i serwer sieciowy na bazie Netty i Hazelcast:
źródło
Dodałbym jeszcze dwie opcje: akka z wbudowaną obsługą JAX-RS i po prostu używając bezpośrednio JAX-RS (prawdopodobnie implementacja Jersey). Chociaż prawdopodobnie mniej "Scala-y" niż inne (poleganie na adnotacjach do wiązania parametrów i ścieżek), JAX-RS jest przyjemny w użyciu, rozwiązując wszystkie problemy związane z kodowaniem usług internetowych przy minimalnym obciążeniu. Nie używałem go przez akka, spodziewałbym się, że jest tam doskonały, uzyskując imponującą skalowalność dzięki implementacji opartej na kontynuacji.
źródło
Spójrz na Finch , bibliotekę kombinatorów Scala do tworzenia usług HTTP Finagle . Finch pozwala na tworzenie złożonych punktów końcowych HTTP z liczby predefiniowanych podstawowych bloków. Podobnie jak w przypadku kombinatorów parsera, punkty końcowe Finch są łatwe do ponownego użycia, tworzenia, testowania i uzasadniania.
źródło
Jak dotąd wszystkie dobre odpowiedzi. Jednym z punktów na korzyść Lift jest RestHelper , który może ułatwić pisanie krótkich, eleganckich metod API. Ponadto wszystkie inne rzeczy, które chcesz zrobić, powinny być dość proste do wykonania w Lift. Biorąc to pod uwagę, Memcache może nie być konieczne.
źródło
Trochę późno na scenie, ale zdecydowanie polecam użycie frameworka Bowler do tworzenia REST API. Jest mały, rzeczowy i obsługuje automatyczną konwersję klas przypadków!
źródło