Ответ 1
Прежде всего, я думаю, что вы вряд ли найдете одно решение, разрешенное для сжатия, чтобы сделать все это в Clojure (за исключением формы библиотеки Java, которая будет использоваться через interop). То, что становится стандартным веб-стеком Clojure, содержит ряд библиотек, которые люди смешивают и сопоставляют разными способами (поскольку они с удовольствием, как правило, идеально совместимы). 1
Вот список некоторых строительных блоков, которые могут вам пригодиться:
-
Ring - Clojure базовая библиотека обработки запросов HTTP; все остальные webby-библиотеки (для написания маршрутов и т.д.), которые, как я знаю, совместимы с Ring. Кольцо активно развивается, имеет надежное сообщество, очень хорошо написано и имеет хороший документ SPEC, в котором подробно изложена его философия дизайна. Это сообщение в блоге дает хороший пример того, как он может быть использован (реакция на GitHub фиксирует).
-
Sandbar - в настоящее время библиотека проверки подлинности, запланировано больше типов функциональности; в разработке.
-
Compojure - зрелая и надежная библиотека, которая обеспечивает хороший DSL для написания маршрутов, которые будут использоваться поверх Кольцо. Это даст вам хорошую обработку URL-адресов.
-
Compojure-rest -" библиотека для создания приложений RESTful поверх Compojure". Compojure-rest, насколько я могу судить, на ранних этапах его развития; возможно, вы можете увидеть это как возможность повлиять на его дизайн.: -)
-
Для работы с XML существует
clojure.contrib.lazy-xml
(и вспомогательная библиотекаclojure.contrib.zip-filter.xml
) и Enlive ( встроенное пространство именclojure.xml
в настоящее время не очень удобно); они будут использоваться в тандеме (хотя для ваших целей первое могло бы быть достаточным). -
Для JSON есть библиотека в contrib и clojure-json (и я думаю, что была хотя бы одна другая lib я похоже, сейчас забывают...); выберите тот, который вам больше нравится.
Всем понравится стиль разработки, основанный на REPL (см. принятый ответ на этот SO-вопрос для трюка Ring, который очень важен для цели Вот). Я полагаю, что вышеупомянутая коллекция ссылок оставляет несколько слепых пятен (в частности, история аутентификации по-прежнему сглаживается, насколько я могу судить), но, надеюсь, это хороший старт.
1 Единственное одноплатное решение для построения webapps в Clojure, которое я знаю, это Conjure, вдохновленный Rails; к сожалению, я должен признать, что я мало знаю об этом, поэтому, если вам интересно, следуйте ссылке и посмотрите вокруг источников, wiki & c.