Выбор веб-фреймворка Scala [закрыто]

Я собираюсь начать проект веб-приложения, которое должно работать на сервере Tomcat. Я решил выбрать Scala -как другую альтернативу, где я работаю с Groovy -главным образом для обеспечения безопасности типов. Сейчас передо мной стоит задача выбора правильных инструментов для работы.

Доступ к проекту, который мне нужно будет разработать, будет осуществляться только через JSON API. Он будет взаимодействовать как с собственной базой данных, так и с двумя внешними сервисами, которые предоставляют API JSON и XML соответственно. Мне также нужно будет иметь возможность планировать периодические задания, когда мое приложение будет выполнять различные задачи синхронизации с этими внешними службами.

Для базы данных я хотел бы иметь возможность определять свои модели в Scala и автоматически генерировать схему. Если возникнет необходимость изменить мои модели, я бы хотел, чтобы миграция справилась с этим.

Для этого приложения я пытаюсь оценить Lift, Play! 2 и Скалатра.

  • Лифт был моим первым выбором. Это самый зрелый из трех проектов, и, похоже, он считается высоко безопасным (. Я не хочу идти на компромисс в отношении безопасности ). Более того, он содержит то, что кажется лучшей библиотекой обработки JSON в Scala. Тем не менее, немного повозившись с ним, я не уверен, что это будет правильный выбор. Документация не совсем лучшая, которую я видел. Более того, Record + Squeryl кажется мне лучшей абстракцией, чем Mapper, но документация по этому использованию еще более скудна. Наконец, хотя Lift, безусловно, можно использовать для создания веб-сервиса, кажется, что его реальная сила заключается в обработке состояния, и поэтому я не уверен, что для моего проекта требуется дополнительная сложность.

  • Играть! 2 документация лучше,и выглядит более знакомым для меня (Я родом из Джанго ). Опять же, его абстракция базы данных по умолчанию меня не совсем устраивает. :ANORM полагается на SQL, который не помогает при проверке типов. В любом случае мне пришлось бы использовать Squeryl, и я не уверен, что документация для этого варианта использования так же хороша. Кроме того, развертывание Play! 2 приложения на данный момент сложнее, чем хотелось бы. Нужно установить Play! на производственном сервере, и я не уверен, что это вариант, где я работаю. В противном случае есть плагин, позволяющий работать с контейнерами сервлетов, но он очень новый, и я не уверен, насколько он стабилен/надежен.

  • Наконец, есть возможность использовать Scalatra . Scalatra кажется очень простой в настройке, и она предназначена именно для создания веб-сервисов. Компромисс заключается в том, что Scalatra не предлагает большой функциональности. Он не интегрируется с существующими ORM и не предлагает, как организовать модельную часть приложения, и не помогает в разработке задач cron или командной строки. Я также не уверен в долгосрочной перспективе проекта.

Как вы думаете, что было бы лучшим выбором для моей задачи?

40
задан Andrea 1 August 2012 в 09:22
поделиться