Скала рамок для сервера API-интерфейс REST? [закрытый]
мы думаем о перемещении нашего сервера REST API (он находится внутри веб-службы, на Symfony PHP) в Scala по нескольким причинам: скорость, отсутствие накладных расходов, меньше процессора, меньше кода, масштабируемость и т. д. Я не знал Scala до нескольких дней назад, но мне нравилось то, что я изучал в эти дни с книгой Scala и всеми сообщениями в блоге и вопросами (это не так уродливо!)
У меня есть следующие варианты:
- построить сервер REST API из царапины
- используйте крошечный веб-фреймворк Scala, например Scalatra
- использовать лифт
некоторые вещи, которые мне придется использовать: HTTP-запросы, вывод JSON, MySQL (data), OAuth, Memcache (cache), журналы, загрузка файлов, статистика (возможно, Redis).
Что бы вы порекомендовали?
7 ответов:
в произвольном порядке:
- Акка HTTP
- спрей
- Paypal squbs (Акка/Спрей)
- DropWizard
- REST.li
- http4s
- Голубые Глаза
- Finagle - отказоустойчивая, протокол-агностическая система RPC
- играть! и Играть-мини! (статьи) (учебник)
- лифт / поднимите JSON.- упрощает предоставление услуг отдыха.
Я собираюсь рекомендовать нефильтрованное. Это идиоматический веб-фреймворк, который делает вещи "способом Scala" и очень красив.
посмотри Xitrum (Я его автор), он предоставляет все, что вы перечислили. его doc достаточно обширен. Из ридми:
Xitrum-это асинхронный и кластерный веб-фреймворк Scala и веб-сервер поверх Netty и Hazelcast:
- Аннотация используется для маршрутов URL, в духе JAX-RS. Вам не нужно объявлять все маршруты в одном месте.
- асинхронный, в духе Netty.
- сеансы хранится в cookies или кластера Hazelcast.
- в процессе и кластерный кэш, вам не нужны отдельные серверы кэша.
- in-process и кластерная Комета, вам не нужен отдельный сервер комет.
Я бы добавил еще два варианта: akka со встроенной поддержкой JAX-RS и просто используя JAX-RS напрямую (возможно, реализация Джерси). Хотя, возможно, меньше "Scala-y", чем другие (полагаясь на аннотации для привязки параметров и путей), JAX-RS-это радость в использовании, чисто решая все проблемы кодирования веб-сервисов с минимальными затратами. Я не использовал его через akka, я бы ожидал, что он будет отличным там, получая впечатляющую масштабируемость через его продолжение реализация.
все хорошие ответы до сих пор. Одно очко в пользу Lift - это его RestHelper, что может сделать его довольно легко писать короткие, элегантные методы API. Кроме того, все остальные вещи, которые вы хотите сделать, должны быть довольно прямолинейными для реализации в лифте. Это, как говорится, с memcache может быть и не надо.
чуть позднее на сцене, но я определенно рекомендую использовать Боулер фреймворк для создания REST API's. It небольшой, до точки и автоматической поддержки преобразования класса case!