Circumflex — общее название программных компонентов для языка программирования Scala, предназначенных для ускорения и повышения эффективности разработки Web-приложений и приложений, основанных на работе с реляционными базами данных. Circumflex представляет собой два независимых каркаса приложений: Circumflex Web Framework для разработки Web-приложений и Circumflex ORM для решения задач объектно-реляционного проецирования (object-relational mapping — ORM).

Ключевые концепции

Circumflex Web Framework Circumflex Web Framework представляет язык описания маршрутов Web-приложения. Каждый маршрут осуществляет сопоставление тех или иных параметров HTTP-запроса и содержит блок, выполняющийся в случае успешного сопоставления. Ниже приведен пример простейшего Web-приложения, построенного с использованием Circumflex Web Framework. class Main extends RequestRouter { get("/") = "Hello world!" post("/form") = { // произвести обработку формы ftl("/complete.html.ftl")

При получении запроса GET / клиенту возвращается текст «Hello world!»; при получении POST /form выполняется блок обработки формы, а для отправки ответа компилируется соответствующий шаблон Freemarker.

Целью Circumflex Web Framework не является создание всеобъемлющего фреймворка, предназначенного для решения абсолютно всех задач, с которыми сталкиваются разработчики. Напротив, набор функциональности минимален, что позволяет разработчикам использовать библиотеки и программные средства, которые наилучшим образом подходят для решения их конкретных задач. Circumflex Web Framework также не ориентирован на конкретную технологию отображения, поскольку является контроллером приложения по архитектуре MVC. Однако, в состав модулей Circumflex входит вспомогательный компонент «Circumflex Freemarker View», обеспечивающий интеграцию с FreeMarker — одним из мощнейших процессоров шаблонов для платформы Java. Благодаря «лояльному» подходу к технологии отображений, Circumflex Web Framework оптимально подходит для создания REST Web сервисов.

Circumflex ORM Circumflex ORM предназначен для решения задач объектно-реляционного проецирования в приложениях, основанных на работе с базами данных, и представляет собой абстракцию над языками определения данных (Data Definition Language, DDL), языками манипулирования данными (Data Manipulation Language, DML) и языками запросов (Structured Query Language, SQL) различных диалектов SQL баз данных.

Основной целью Circumflex ORM является обеспечения прозрачного управления взаимодействием с базой данных, в отличие от большинства других ORM, скрывающих детали SQL от разработчика (см. Peter Becker’s Blog Post «ORM: The Leaky Abstraction»).

Circumflex ORM ориентирован как на простые приложения, так и на так называемые «data-centric» приложения (приложения, основанные на работе с данными), часть бизнес-логики которых реализована непосредственно на системе хранения. Circumflex ORM поддерживает генерацию сложных объектов схемы (включая представления, триггеры и хранимые процедуры), запросы любой сложности, прозрачный переход по ассоциациям (lazy fetching и eager fetching), кэширование объектов на уровне транзакции, гибкую валидацию данных, а также импорт данных из XML.

Лицензия Circumflex является свободным программным обеспечением с открытым исходным кодом (open source) и распространяется на условиях BSD-подобной лицензии.

Ссылки Официальный сайт Circumflex Исходный код проект Circumflex на GitHub Язык шаблонов FreeMarker

Категория:Объектно-ориентированное программирование Категория:Интерфейсы доступа к данным