Я собираюсь запустить проект для веб-приложения, которое должно запускаться на сервере Tomcat. Я решил пойти на Scala - другую альтернативу, где я работаю Groovy - по существу для безопасности типов. Теперь я столкнулся с задачей выбора правильных инструментов для работы.
Проект, который мне нужно будет разработать, будет доступен только через API JSON. Он будет взаимодействовать как с собственной базой данных, так и с двумя внешними службами, которые отображают соответственно JSON и XML API. Мне также нужно будет запланировать периодические задания, когда мое приложение будет выполнять различные задачи синхронизации с этими внешними службами.
Для базы данных я хотел бы иметь возможность определять мои модели в Scala и автоматически генерировать схему. Если возникнет необходимость изменить мои модели, я бы хотел иметь миграцию для ее обработки.
Для этого приложения я пытаюсь оценить Lift, Play! 2 и Scalaтра.
-
Подъем был моим первым выбором. Это самый зрелый из трех проектов и, кажется, считается очень безопасным (я не хочу идти на компромисс в отношении безопасности). Кроме того, он показывает, как выглядит лучшая библиотека обработки JSON в Scala. Тем не менее, после того, как я немного потрудился с этим, я не уверен, что это будет правильный выбор. Документация не совсем то, что я видел. Более того, Record + Squeryl кажется мне лучше абстракцией, чем Mapper, но документация для этого использования еще более ограничена. Наконец, хотя лифт, безусловно, может быть использован для создания веб-службы, кажется, что его реальная сила заключается в обработке состояния, и поэтому я не уверен, что для моего проекта требуется дополнительная сложность.
-
Играть! 2, похоже, имеет лучшую документацию и выглядит более знакомым мне (я родом из фона Django). Опять же, аббревиатура базы данных по умолчанию на самом деле не успокаивает меня: ANORM полагается на SQL, что не помогает при проверке типов. В любом случае, мне придется использовать Squeryl, и я не уверен, насколько хорошая документация для этого варианта использования. Кроме того, развертывание Play! В настоящее время 2 приложения сложнее, чем хотелось бы. Нужно установить Play! на производственном сервере, и я не уверен, что это вариант, где я работаю. В противном случае есть плагин, чтобы он работал с контейнерами сервлетов, но он очень новый, и я не уверен, насколько он стабильный/надежный.
-
Наконец, есть возможность использовать Scalatra. Scalaтра кажется очень простой в настройке, и она предназначена именно для создания веб-сервисов. Компромисс в том, что Scalatra не предлагает много функциональности. Он не интегрируется с существующими ORM или не предлагает, как организовать модельную часть приложения, и это не помогает при проектировании задач cron или командной строки. Я также не уверен в долгосрочном будущем проекта.
Как вы думаете, что будет лучшим выбором для моей задачи?