Я сейчас работаю над своим вторым приложением Lift - оно очень сильно в ласковом месте Lift - очень в реальном времени, много параллелизма.
Первое, которое мы потеряли после нескольких дней борьбы сслой БД (теперь мне лучше поверить), и вместо этого он перешел в Play / Scala.Это позволило максимально расширить имеющиеся знания нашей команды и сделать возможным установление сроков.Но горячая перезагрузка кода практически прекратилась, когда наш проект стал достаточно большим (продолжал работать PermGen - это постоянная проблема с компиляцией Scala где угодно) и ручным манипулированием такими вещами, как параметры вызова метода и безопасность расположения в разных местах.на сайте получилось довольно громоздко.Мы были рады, когда это было сделано - так же, как я склонялся к поиску Rails 1, скорость увеличивалась с уменьшением размера проекта, и к концу все стало таким же утомительным и подверженным ошибкам, как работа в Velocity /.Spring / XML ++ и т. Д.).
На этот раз мы посвятили себя тому, чтобы просто понять, как Lift делает то, что он делает, и правильные способы делать вещи.Это означало много случайного просмотра списка рассылки (обсуждения, которые имеют несколько версий, часто все еще актуальны), и, что наиболее важно, новый дух для команды.Необходимо было очень сильно усвоить девиз:
«Это тяжело и повторяется. Держу пари, что они сделали более легкий способ сделать это».
До сих пор Lift никогда нас не разочаровывал.Между прочим, я не говорю о таких вещах, как Sitemap и синтаксис конкатенации списков - вы ДОЛЖНЫ иметь довольно хороший контроль над функциональным Scala, иначе вы просто не сможете читать исходный код или даже настраивать свое приложение.
Это говорит о том, что это не сумасшедшие монады ввода-вывода или что-то в этом роде, просто некоторые распространенные идиомы, которые вы все равно найдете в течение нескольких недель в Scala.
Самой большой проблемой для нас была медленная компиляцияцикл.Для этого требуется около 20 секунд: запустите наш проект, который отличается от Play, который (когда он работает) в горячем режиме компилирует все ваши вещи.С другой стороны, мы на самом деле рассчитывали, что на днях один из наших разработчиков пожаловался на это, и оказалось, что, хотя Play технически скомпилировал его, странице все равно потребовалось 12 секунд для загрузки в режиме Dev.Таким образом, это не большая потеря, просто кажется немного медленным, чтобы прыгать в командную строку.
Lift позволяет вам многое сделать, и в нашем приложении есть много мест, где (потому что оно доступно), мы сказали: «Да, мы действительно предпочли бы, чтобы это живое обновление немедленно обновлялось для всех зрителей этой страницы, вместо того, чтобы потом обнаруживать, что они устарели (подумайте о том времени, когда вы публиковали одновременнокто-то на SO, с тем же ответом.) COMET есть везде, оказывается - это не случай специалиста, а способ, которым все должно работать. И Lift делает это действительно простым.
Мы также любим сильных, программно настраиваемая модель безопасности - как только мы переключили свои взгляды на «Мы должны занести в белый список каждое местоположение и указать необходимые условия входа», мы никогда не видели другой проблемы сеанса - вы знаете, те, где вы предполагали, что пользователь прошел быопределенный путь, и, следовательно, будет знать целую кучу параметров? Например, действительный пользователье, а область интересов или как?(Я намеренно расплывчато).Это может быть одной из неловких вещей в инфраструктуре с состоянием, когда вы захотите иметь пригодное для использования состояние, когда пользователь переходит на страницу, вместо того, чтобы (например) просто требовать, чтобы все состояния переносились при каждом запросе.
Мой вывод из этого обновленного выстрела в Лифт:
Оно того стоит.Не только для создания приложения, которое вы пытаетесь создать, но и для создания приложения, которое вы не знали, что вам нужно.
Там много царапин на голове, но не так много кода. И когда это работает, это действительно работает. Он быстрый и чистый, и, несмотря на все чудеса работы браузера и сервера, я еще ни разу не видел, чтобы он запутался.