Подтвердить что ты не робот

Выбор веб-рамки Scala

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

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

4b9b3361

Ответ 1

Если вы находитесь на фоне MVC, то Play будет чувствовать себя наиболее знакомым. Подъем не является MVC, и для обертывания вокруг него требуется некоторое время.

Нет причин, по которым вы не можете использовать Scala с основанной на Java платформой, такой как Джерси, Spring MVC, Dropwizard, Restlet, RESTEasy и т.д. Или вы можете использовать Scala с Grails так же, как вы можете использовать Java с Grails. Примечание. Groovy имеет тип безопасности, начиная с версии 2.0, чтобы что-то учитывать.

Если вы думаете о Scalatra, тогда не забудьте Spray, Unfiltered, BlueEyes...

Обязательно ознакомьтесь с Matt Raible всестороннее сравнение веб-фреймворков. И эти другие вопросы: Scala для сервера API-интерфейса Restore?, Как реализовать веб-службу REST с помощью Akka?

Ответ 2

Хотя вы уже дали некоторые кандидаты, я рекомендую вам этот разговор Тима Перретта (автора "Лифта в действии", в котором он сравнивает scala webframeworks:  http://skillsmatter.com/podcast/scala/scalable-language-web