Скала рамок для сервера API-интерфейс REST? [закрытый]


мы думаем о перемещении нашего сервера REST API (он находится внутри веб-службы, на Symfony PHP) в Scala по нескольким причинам: скорость, отсутствие накладных расходов, меньше процессора, меньше кода, масштабируемость и т. д. Я не знал Scala до нескольких дней назад, но мне нравилось то, что я изучал в эти дни с книгой Scala и всеми сообщениями в блоге и вопросами (это не так уродливо!)

У меня есть следующие варианты:

  • построить сервер REST API из царапины
  • используйте крошечный веб-фреймворк Scala, например Scalatra
  • использовать лифт

некоторые вещи, которые мне придется использовать: HTTP-запросы, вывод JSON, MySQL (data), OAuth, Memcache (cache), журналы, загрузка файлов, статистика (возможно, Redis).

Что бы вы порекомендовали?

7 98

7 ответов:

в произвольном порядке:

Я собираюсь рекомендовать нефильтрованное. Это идиоматический веб-фреймворк, который делает вещи "способом 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, я бы ожидал, что он будет отличным там, получая впечатляющую масштабируемость через его продолжение реализация.

посмотри Финч, библиотека комбинаторов Scala для построения Finagle службы HTTP. Finch позволяет создавать сложные конечные точки HTTP из числа предопределенных базовых блоков. Подобно комбинаторам парсеров, конечные точки Finch легко использовать, создавать, тестировать и рассуждать.

все хорошие ответы до сих пор. Одно очко в пользу Lift - это его RestHelper, что может сделать его довольно легко писать короткие, элегантные методы API. Кроме того, все остальные вещи, которые вы хотите сделать, должны быть довольно прямолинейными для реализации в лифте. Это, как говорится, с memcache может быть и не надо.

чуть позднее на сцене, но я определенно рекомендую использовать Боулер фреймворк для создания REST API's. It небольшой, до точки и автоматической поддержки преобразования класса case!