Мы думаем о переносе нашего сервера API доступа (он находится в веб-сервисе на Symfony PHP) на Scala по нескольким причинам: скорость, отсутствие накладных расходов, меньше процессора, меньше кода, масштабируемость и т.д. t знать Scala до нескольких дней назад, но мне понравилось то, что я изучал в эти дни с помощью книги Scala и всех сообщений в блоге и вопросов (это не так уродливо!)
У меня есть следующие опции:
Некоторые вещи, которые мне придется использовать: HTTP-запросы, вывод JSON, MySQL (данные), OAuth, Memcache (кеш), журналы, загрузки файлов, статистика (возможно, Redis).
Что вы порекомендовали бы?
Без особого порядка:
Я порекомендую Unfiltered. Это идиоматическая веб-структура, которая делает вещи "способом Scala" и очень красива.
Взгляните на Xitrum (я его автор), он предоставляет все, что вы указали. Его документ довольно обширен. Из README:
Xitrum - это асинхронная и кластерная веб-фреймворк Scala и веб-сервер поверх Netty и Hazelcast:
Я бы добавил еще два варианта: akka со встроенной поддержкой JAX-RS и просто с использованием JAX-RS напрямую (возможно, реализация в Джерси). Хотя, возможно, меньше "Scala -y", чем другие (опираясь на аннотации для привязки параметров и путей), JAX-RS - это радость в использовании, чистое решение всех проблем кодирования веб-сервисов с минимальным размером. Я не использовал его с помощью akka, я ожидал бы, что он будет превосходным там, получая впечатляющую масштабируемость благодаря его реализации на основе продолжения.
Взгляните на Finch, библиотеку комбинаторов Scala для построения Finagle HTTP-службы. Finch позволяет создавать сложные конечные точки HTTP из числа предопределенных базовых блоков. Точно так же, как и комбинаторы парсеров, конечные точки Finch легко повторно использовать, компилировать, тестировать и рассуждать.
Все хорошие ответы. Один момент в пользу "Поддержки" - это RestHelper, что позволяет легко писать короткие, элегантные методы API. Кроме того, все другие вещи, которые вы хотите сделать, должны быть достаточно простыми для внедрения в Lift. При этом Memcache может не понадобиться.
Немного поздно на сцене, но я определенно рекомендую использовать Bowler для создания REST API. Это небольшая, точная и автоматическая поддержка преобразования класса case!