Каковы различия между выбором промежуточного программного обеспечения Scala? - PullRequest
63 голосов
/ 13 января 2012

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

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

Текущий список возможных вариантов:

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

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

UPDATE:

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

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

Это мой собственный опыт с тех пор, как я задал этот вопрос:

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 24 июня 2014

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

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

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

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

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

0 голосов
/ 22 июля 2014

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

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

...