Какие веб-рамки Scala доступны?

Я только начал изучать Scala, и первое, что я собираюсь реализовать, - это крошечное веб-приложение. Я использовал Erlang за последний год для реализации серверного программного обеспечения, но я никогда не писал веб-приложения раньше. Это будет большой опыт.

Существуют ли веб-рамки для Scala, за исключением Lift?

Не поймите меня неправильно, Lift выглядит потрясающе. Я просто хочу знать, сколько фреймворков существует, чтобы я мог выбирать между ними. Всегда хорошо иметь выбор, но я единственное, что я нашел, это Лифт.

Ответ 1

Меня очень интересует Scala, но я еще не использовал его, поэтому с этим предостережением рамки, о которых я знаю, не упоминаются в HRJ answer (Lift, Sweet, Slinky):

Ответ 2

Я написал сообщение в блоге об этом.

Подводя итог, некоторые из вариантов:

Наконец я обнаружил, что ни один из них не подходит для меня, и разработал мою собственную небольшую "структуру". (Пока это не open-source).

Ответ 3

Ниже приведена свалка фреймворков. Это не значит, что я их использовал:

  • Coeus. Традиционная веб-инфраструктура MVC для Scala.

  • Unfiltered. Инструментарий для обслуживания HTTP-запросов в Scala.

  • Uniscala Granite.

  • Gardel

  • Mondo

  • Amore. Порт Scala веб-рамки Ruby Sinatra

  • Изменяет XML. Гибкий подход к обработке XML и упрощенный способ взаимодействия с XML.

  • Belt. Rack-подобный интерфейс для веб-приложений, построенных поверх Scalaz-HTTP

  • Frank. Веб-приложение DSL, построенное поверх Scalaz/Belt

  • MixedBits. Основа для языка программирования Scala для создания веб-сайтов

  • Circumflex. Объединяет несколько автономных проектов с открытым исходным кодом для разработки приложений с использованием языка программирования Scala.

  • Scala Webmachine. Веб-сайт порта Башо в Scala, система на основе REST для создания веб-приложений

  • Bowler. RESTful, многоканальная готовая веб-инфраструктура Scala

Ответ 4

Мне нравится Lift; -)

Play - мой второй выбор для Scala дружественных веб-фреймворков.

Капля - мой третий выбор.

Ответ 5

Попробуйте Play Framework, которые также поддерживают Scala.

Ответ 6

Следует отметить, что также существует значительный интерес к Wicket и Scala. Wicket отлично подходит для Scala. Если вы хотите воспользоваться очень зрелым проектом Wicket и его экосистемой (расширениями), а также кратким синтаксисом и преимуществами производительности Scala, это может быть для вас!

См. также:

Ответ 7

Одна очень интересная веб-среда с коммерческим развертыванием - Scalatra, вдохновленная Ruby Sinatra. Здесь статья InfoQ об этом.

Ответ 8

Я нахожу Unfiltered очень интересным https://github.com/unfiltered/unfiltered.

Он упоминается в списке IttayD.

Вот презентация об этом http://unfiltered.lessis.me/#0 и видео http://code.technically.us/post/942531598/doug-tangren-presents-the-unfiltered-toolkit-for

Также здесь есть статья с дополнительной информацией http://code.technically.us/post/998251172/holding-the-parameter

Ответ 9

Play довольно сладка.

Теперь производство готово. Он включает в себя: классную структуру шаблонов, автоматическую перезагрузку исходных файлов на сейфе, сложную систему действий, удивительность akka и т.д.

Его часть Таблица типов безопасности.

Используя его для двух проектов, я могу сказать, что он работает довольно гладко, и в следующий раз вы должны подумать над тем, чтобы изучить новые веб-фреймворки.

Ответ 10

Я использую JAX-RS, используя Jersey (вы можете написать хороший ресурс beans в Scala, Java или Groovy) для создания веб-приложений RESTul. Затем я использую Scalate для рендеринга представлений с использованием одного из разных языков шаблонов (JADE, Scaml, Ssp (Scala Страницы сервера), Mustache и т.д.).

Ответ 11

Там есть новая веб-инфраструктура, называемая Scala Веб-страницы. На сайте:

Целевая аудитория

Веб-структура Scala Pages, скорее всего, понравится веб-программистам, которые приходят с фона Java и хотят запрограммировать веб-приложения в Scala. Основное внимание уделяется ООП, а не функциональному программированию.

Характеристики и функции

  • Придерживается парадигма Model-View-Control
  • Текстовый механизм шаблонов
  • Простой синтаксис: $variable и <?scp-instruction?>
  • Определение кодировки/контента, способное обрабатывать международные текстовые кодировки
  • Фрагменты вместо пользовательских тегов
  • Перенаправление URL

Ответ 12

Прикрутил, я думаю, мы на одной лодке. Я также пришел к Scala из Эрланг. Мне нравится Nitrogen, поэтому я решил создать веб-фреймворк Scala, вдохновленный им.

Посмотрите Xitrum. Его документ довольно обширен. Из README:

Xitrum - это асинхронная и кластерная веб-фреймворк Scala и веб-сервер поверх Netty и Hazelcast:

  • Он заполняет промежуток между Scalatra и Lift: более мощный, чем Scalatra, и более простой в использовании, чем Lift. Вы можете легко создать API RESTful и обратные передачи. Xitrum является первым контроллером, например, Scalatra, а не первым, как Lift.
  • Аннотации используются для URL-маршрутов в духе JAX-RS. Вам не нужно объявлять все маршруты в одном месте.
  • Типы безопасности, в духе Scala.
  • Async, в духе Netty.
  • Сессии могут храниться в файлах cookie или кластеризованных Hazelcast.
  • Проверка jQuery интегрирована для проверки стороны браузера и сервера. i18n с использованием GNU gettext, что означает, в отличие от большинства других решений, поддерживаются как сингулярные, так и множественные формы.
  • Условный GET с использованием ETag.

Hazelcast также дает:

  • В процессе работы и кластеризованном кеше вам не нужны отдельные серверы кешей.
  • В процессе работы и кластерной кометы вы можете масштабировать Comet на несколько веб-серверов.

Для быстрого запуска следуйте tutorial.

Ответ 13

Там также Pinky, который раньше был на битбакете, но был переведен на github.

Кстати, github - отличное место для поиска проектов Scala, так как там много там.

Ответ 14

Я хотел бы добавить свои усилия в этот список. Вы можете узнать больше здесь:

brzy framework

Это в раннем развитии, и я все еще активно работаю над этим. Он включает в себя такие функции, как:

  • Фокус на простоте и расширяемости.
  • Интегрированный инструмент сборки.
  • Модульная конструкция; некоторые исходные модули включают поддержку масштабирования, электронной почты, jms, jpa, squeryl, cassandra, cron services и т.д.
  • Простые контроллеры и действия RESTful.

Приветствуется всякая обратная связь.

UPDATE: 2011-09-078, я только что опубликовал большое обновление до версии 0.9.1. Там больше информации на http://brzy.org, который включает в себя скринкаст.

Ответ 15

Оба Sweet и Slinky, кажется, не заражены в течение года. Sweet Maven repo sweetsoftwaredesign.com мертв, поэтому нет возможности загружать зависимости.

Ответ 16

Примечание: Spiffy устарел.

< штекеp >

Spiffy

  • записывается в Scala
  • использует фантастическую библиотеку Akka и актеров для масштабирования.
  • использует сервлет API 3.0 для обработки асинхронных запросов
  • является модульным (замена компонентов осуществляется прямо).
  • использует DSL для сокращения кода, где вы этого не хотите.
  • поддерживает Scalate и Freemarker для шаблонов

Spiffy - это веб-фреймворк с использованием Scala, Akka (реализация Scala актера) и API Java Servlet 3.0. Он использует асинхронный интерфейс и нацелен на создание широкомасштабной параллельной и масштабируемой среды для веб-приложений. Всевозможные компоненты Spiffy основаны на идее, что они должны быть независимыми минималистическими модулями, которые очень быстро выполняют небольшую работу и передают запрос следующему компоненту в конвейере. После того как последний компонент обработает запрос, он сигнализирует контейнер сервлета путем "завершения" запроса и отправки его клиенту.

https://github.com/mardambey/spiffy

</разъем >

Ответ 17

Вы также можете попробовать Context. Он был разработан как Java-framework, но я успешно использовал его с Scala также без проблем. Это компонентная основа и имеет аналогичные свойства, такие как Lift или Tapestry.

Ответ 18

Я наткнулся на ваш вопрос несколько недель назад, но с тех пор также узнал о Circumflex. Это хорошая минимальная структура, поэтому ее легко изучить, и она также имеет неплохую документацию.

Помимо минимального уровня, он также утверждает, что хорошо работает с другими библиотеками и позволяет вам использовать свою собственную реализацию, когда вам это нужно.