В чем разница между выбором Scala промежуточного ПО?

Примечание: К сожалению, этот вопрос был закрыт, но я пытаюсь его поддерживать, если кто-то другой встречает тот же вопрос.

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

Текущий список жизнеспособных опций:

Есть, вероятно, больше вариантов. Как решить, какой из них использовать? Каковы черты (извините за каламбур;-) хорошего Scala выбора промежуточного ПО. С одной стороны, я хотел бы пойти на Akka, потому что это часть стека TypeSafe Scala, но с другой стороны, что-то вроде Finagle имеет богатый набор библиотек и упрощает прокладку сантехники. Спрей выглядит красивым и простым в использовании.

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

UPDATE:

Я хотел бы, чтобы этот вопрос был вновь открыт. Хороший ответ на этот вопрос поможет новым Scalateers избежать связанных ошибок.

ОБНОВЛЕНИЕ 2:

Это мои собственные переживания, начиная с вопроса:

Finagle - я использовал Finagle для проекта, и он прочный.

Спрей - В моем последнем проекте я использую Спрей, и я очень доволен. Последние выпуски построены на Akka 2, и вы можете запускать их непосредственно с помощью библиотеки Spray-can, которая устраняет необходимость в веб-сервере. Спрей - это набор библиотек, а не фреймворк и очень модульный. Узнайте о Spray: REST на видео Akka дает отличный обзор, и этот блог в Cakesolutions показывает действительно хороший подход к разработке и архитектура.

ОБНОВЛЕНИЕ 3:

Жизнь движется довольно быстро. Если вы не останавливаетесь и не смотрите вокруг, вы можете пропустить это. - Феррис Буллер

В наши дни выбор стал проще. По моему скромному мнению, Спрей выиграл битву. Он интегрирован в Akka, чтобы стать следующим Akka HTTP. Я использую Spray сейчас в нескольких проектах и ​​могу честно сказать, что это фантастическое и лучшее поддерживаемое программное обеспечение, с которым я когда-либо сталкивался.

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

Ответ 1

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

Лично я думаю, что ничто действительно не противостоит разбрызгиванию для создания как серверов, так и априотов, http-клиентов и всего, что вы хотите. То, что мне нравится в аэрозоле, - это то, что они построили с аккой. Возможно, это был действительно ранний проект, когда я впервые начал использовать его, но архитектура имела смысл. Эти ребята знали, что они делают с точки зрения использования преимуществ использования модели актера и отсутствия каких-либо операций блокировки.

Пока актеры могут привыкнуть, мне нравятся. Они сделали мои системы очень масштабируемыми и дешевыми, чтобы работать, потому что мне не нужно как многообещающее оборудование, как в прошлом. Плюс, у брызг есть DSL с распылительной трассировкой, поэтому придание отдыха api относительно просто, если вы следуете правилам... не блокируйте. Это, конечно, означает, что вы не идете и не пытаетесь подключиться к http-клиенту apache commons, чтобы делать клиентские запросы от api или участников, потому что вы вернетесь к блокирующим моделям.

До сих пор я очень доволен спреем, типичным и аккой. Их модели просто естественным образом приспосабливаются к созданию очень устойчивых систем, которые возвращаются сами по себе, если что-то должно произойти, и вы берете неудачный подход. Одна говядина, которую я имею с распылителем (и это не сбой распыления), - это прочная поддержка IDE для маршрутизации DSL. Я абсолютно презираю Eclipse и всегда был пользователем IDEA. Когда я начал использовать плагин Scala, все выглядело нормально. Тогда моя маршрутизация dsl естественным образом превратилась в более крупных зверей. Что-то о том, как ИДЕА анализирует этот код, он держит свои штаны в любое время, когда сталкивается с чем-либо с распылительной или бесформенной. Он до такой степени, когда он не используется (я набираю 2-3 буквы и должен ждать 5 минут, чтобы восстановить контроль).

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

Ответ 2

Здесь вы можете найти отличный список ресурсов scala с кратким описанием всех перечисленных вами альтернатив.

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