Введение ======== :: +--------------------+ | Клиенты | +--------------------+ | +--------------------+ | Netty | +--------------------+ | Xitrum | | +----------------+ | | | HTTP(S) Сервер | | | |----------------| | | | Web фреймворк | | <- Akka, Hazelcast -> Другие экземпляры | +----------------+ | +--------------------+ | Приложение | +--------------------+ Xitrum - асинхронный и масштабируемый Scala веб фреймворк и HTTP(S) сервер. Он построен на базе `Netty `_ и `Akka `_. Из отзывов `пользователей `_: Wow, this is a really impressive body of work, arguably the most complete Scala framework outside of Lift (but much easier to use). `Xitrum `_ is truly a full stack web framework, all the bases are covered, including wtf-am-I-on-the-moon extras like ETags, static file cache identifiers & auto-gzip compression. Tack on built-in JSON converter, before/around/after interceptors, request/session/cookie/flash scopes, integrated validation (server & client-side, nice), built-in cache layer (`Hazelcast `_), i18n a la GNU gettext, Netty (with Nginx, hello blazing fast), etc. and you have, wow. Возможности ----------- * Безопасный относительно типов (typesafe) во всех отношениях где это возможно. * Полностью асинхронный. Необязательно слать ответ на запрос немедленно, можно запустить сложные вычисления и дать ответ, когда он будет готов. Поддерживаются Long polling, chunked response, WebSockets, SockJs, EventStream. * Встроенный веб сервер основан на высоко производительном `Netty `_, отдача статических файлов сравнима по производительности с `Nginx `_. * Обширные возможности для кэширования как на серверной так и на клиентской стороне. На уровне сервера файлы маленького размера сохраняются в памяти, большие файлы пересылаются с использованием NIO's zero copy. На уровне фреймворка есть возможность сохранить в кэш страницу, действие (action) или объект в стиле Rails. Учтены рекомендации `Google `_. Ревалидация кэша возможна в любой момент. * Для статических файлов поддерживаются `Range запросы `_. Эта функция необходима для отдачи видео файлов. * Поддержка `CORS `_. * Автоматический расчет маршрутов (routes) приложения в стиле JAX-RS и Rails. Нет необходимости в объявлении маршрутов в каком-либо файле. Благодаря этому Xitrum позволяет объединять несколько приложений в одно. Все маршруты из jar файлов объединяются и работают как единое приложение. * Обратная маршрутизация: генерация ссылок на контроллеры и действия. * Генерация документации на основе `Swagger Doc `_. * Автоматическая перезагрузка классов и маршрутов при изменении (не требует перезапуска сервера). * Представления (views) могут быть созданы с использованием `Scalate `_, Scala или xml (во всех случаях происходит проверка типов на этапе компиляции). * Сессии могут хранится в куках или кластеризованны, например, с помощью `Hazelcast `_. * Встроенная валидация с `jQuery `_ (опционально). * i18n на основе `GNU gettext `_. Автоматическая генерация pot файлов из исходников. gettext поддерживает множественные и единственные формы числа. Идеологически Xitrum находится между `Scalatra `_ и `Lift `_: более функциональный чем Scalatra и гораздо проще чем Lift. Вы можете очень просто создавать RESTful APIs и postbacks. `Xitrum `_ является controller-first фреймворком. :doc:`Связанные сcылки ` список демонстрационных проектов, плагинов и прочее. Авторы ------ `Xitrum `_ - проект с открытым `исходным кодом `_ проект, вступайте в официальную `Google группу `_. Авторы в списке упорядочены по времени их `первого вклада в проект `_. (*): Участники команды разработки Xitrum. * `Ngoc Dao (*) `_ * `Linh Tran `_ * `James Earl Douglas `_ * `Aleksander Guryanov `_ * `Takeharu Oshida (*) `_ * `Nguyen Kim Kha `_ * `Michael Murray `_