DevExpress XAF vs Jmix

Платформы XAF и Jmix предназначены для того, чтобы процесс разработки бизнес-приложений был максимально эффективным. Эффективность обеспечивается за счёт того, что Jmix и XAF удачно сочетают в себе преимущества традиционного подхода к разработке и сильные стороны концепции Low-Code. Для обеих платформ характерны черты конструкторов приложений, унаследованные от Low-Code, например, использование универсальных визуальных компонентов и готовых функциональных блоков. При этом сохраняется полный контроль над кодом приложения, гибкость разработки и адаптивность при автоматизации разнообразных бизнес-процессов. XAF и Jmix — примеры зрелых и надежных платформ для быстрого создания приложений, каждая в своём технологическом стеке: .NET Core и Java + Spring Boot соответственно. В обоих случаях это продукт для профессиональных разработчиков, помогающий быстро адаптироваться к использованию стека технологий новичкам, но требующий наличия фундаментальных знаний языка разработки и навыков построения веб-приложений.

DevExpress XAF vs Jmix
Содержание

    Общее определение

    XAF

    XAF (eXpressApp Framework) — это технологическая платформа, разработанная компанией DevExpress, призванная ускорить и упростить создание бизнес-приложений. Она предлагает модульную и расширяемую архитектуру, позволяющую разработчикам создавать приложения для Windows и Web с использованием технологий .NET. С помощью XAF можно создать:

    • Десктопное приложение: приложение WinForms (для .NET Framework или .NET 6+).
    • Веб-приложение: приложение ASP.NET Core Blazor (для решений на .NET 6+) или приложение ASP.NET Web Forms (для .NET Framework).
    • В данном обзоре в основном будет рассматриваться разработка приложений на технологии ASP.NET Core Blazor.

    XAF предоставляет набор готовых модулей с уже реализованным функционалом, обширный набор компонентов пользовательского интерфейса и инструменты для разработчиков.

    • более 20 готовых компонентов-модулей, например, аудит, отчеты, безопасность.
    • плагин для Visual Studio, который содержит визуальные редакторы, например, редактор метаданных приложения, визарды для создания решения, визуальные инструменты для работы с моделью данных, управления модулями приложения.
    • визуальные компоненты, разработанные DevExpress

    Jmix

    Jmix — это технологическая платформа для быстрой разработки бизнес-приложений, которая интегрирует высокоуровневый Java-фреймворк Jmix и среду разработки Jmix Studio.
    Фреймворк Jmix идеально подходит для создания приложений, ориентированных на работу с данными, со сложной моделью данных, насыщенным пользовательским интерфейсом и интегрированными бизнес-процессами. Это full stack фреймворк, обеспечивающий поддержку разработки как backend, так и UI вашего приложения.
    Jmix основан на Spring Boot, который является де-факто стандартом для разработки корпоративных веб-приложений на Java. Это означает, что вы можете использовать множество сторонних библиотек и фреймворков с минимальной конфигурацией в дополнение к функционалу Jmix.

    Среда разработки Jmix Studio — это плагин для IntelliJ IDEA Community Edition, который облегчает все этапы разработки приложений: от создания и конфигурации проекта до определения модели данных и генерации скриптов для миграции базы данных, разработки UI экранов в визуальном редакторе. Он предоставляет продвинутые функции навигации, автодополнения кода и инспекции, специфичные для Jmix-проектов.

    Архитектура

    XAF

    Для разработки веб-приложений на .NET 6+ используется технология Blazor — это UI-фреймворк от Microsoft для создания интерактивных приложений, которые могут работать как на стороне сервера, так и на стороне клиента на платформе .NET. В XAF используется Blazor Server с исполнением кода и рендерингом визуальных компонентов на стороне сервера. Для хранения данных приложений, написанных с помощью XAF, используется реляционная база данных.

    DevExpress XAF vs Jmix

    Фреймворк работает с данными через ORM-слой, что означает, что все операции с базой данных в XAF выполняются автоматически. Создание, настройка и обновление таблиц в базе данных скрыты от разработчика. Реализацию слоя ORM можно выбрать из двух доступных вариантов: Entity Framework от Microsoft или XPO — продукт компании DevExpress.

    Данные описываются с помощью бизнес-классов (на изображении обозначены как «Business Classes»), которые, в свою очередь, отображаются на таблицы в базе данных с помощью ORM. XAF включает в себя библиотеку бизнес-классов («Business Class Library»), в которой содержится реализация классов наиболее распространённых бизнес-сущностей (Person, Note, Organization) и некоторых интерфейсов для работы с модулями XAF, например, с модулем безопасности. Как правило, эти классы используются для демонстрационных целей, а разработчики на их основе могут создавать свои реализации и разрабатывать логику.

    XAF анализирует бизнес-классы и создаёт метаданные, на основании которых формируется пользовательский интерфейс. Эти метаданные называются "Модель приложения". Разработчик может вносить изменения в пользовательский интерфейс через модель приложения с помощью кода или визуального редактора модели.

    Фреймворк автоматически создаёт пользовательский интерфейс на основе Модели приложения. Представления — это автоматически созданные элементы пользовательского интерфейса, используемые для отображения и управления данными. В XAF существуют три типа представлений: List View, Detail View и Dashboard View.

    За взаимодействие с пользователем и управление потоком приложения отвечают объекты-контроллеры. XAF предоставляет готовые объекты-контроллеры, содержащие реализацию логики от базовых операций с данными CRUD до более специфичных решений бизнес-задач, таких как, например, полнотекстовый поиск данных ("Controller & Action Library"). Чаще всего контроллеры служат контейнерами для действий, абстракций элементов взаимодействия с конечным пользователем — кнопок, меню и т. д.

    Среда разработки

    Обе платформы предлагают разработчикам набор инструментов в виде плагина для среды разработки: XAF для Visual Studio и Jmix Studio для IntelliJ IDEA Community Edition. В обоих случаях плагины доступны для open-source версий этих сред разработки.

    Плагин XAF для Visual Studio включает
    следующие компоненты:

    Плагин Jmix Studio для IntelliJ IDEA Community Edition включает следующие компоненты:

    Мастер создания проектов
    1 из 8
    Помогает создать новый Jmix проект и настроить основные параметры.
    Картинка
    Дизайнер сущностей
    2 из 8
    Jmix Studio предоставляет визуальный дизайнер для упрощенного создания сущностей, их атрибутов, правил валидации, взаимосвязей между ними и обработчиков событий жизненного цикла.
    Картинка
    Мастер создания экранов
    3 из 8
    Отображает список доступных шаблонов типовых экранов для работы с моделью данных и ручными задачами бизнес-процессов. Мастер позволяет настроить параметры создаваемых экранов в соответствии с выбранным шаблоном. Например, на этапах "Entity list view fetch plan" и "Entity detail view fetch plan" можно сконфигурировать визуально граф объектов, который потребуется для работы в пользовательском экране. В результате работы мастера будут созданы XML-дескриптор экрана — файл с декларативной версткой и файл контроллера экрана. Файл пакета сообщений будет обновлен. В случае создания экрана списка, в главное меню будет добавлен новый пункт меню.
    Картинка
    WYSIWYG дизайнер компоновки экранов
    4 из 8
    Представляет набор инструментов, позволяющих создавать макет экрана и задавать свойства визуальных компонентов пользовательского интерфейса в стиле WYSIWYG. Результат работы дизайнера — XML-файл дескриптора верстки пользовательского экрана. При изменении файла дескриптора дизайнер также автоматически обновляет макет экрана.
    Картинка
    Дизайнер фетч-планов
    5 из 8
    помогает определить, какой граф объектов должен быть загружен из базы данных в конкретном пользовательском сценарии.
    Картинка
    Дизайнер меню
    6 из 8
    помогает определить структуру и внешний вид главного меню, настроить события при переходе между элементами.
    Картинка
    Дизайнер ролей
    7 из 8
    визуальные инструменты для редактирования параметров ресурсных ролей и ролей уровня строк на этапе разработки приложения.
    Картинка
    Дизайнер BPMN
    8 из 8
    помогает визуально моделировать бизнес-процессы непосредственно в IDE и связывать элементы процесса с объектами и бизнес-логикой проектируемого приложения. Дизайнер BPMN становится доступен только при добавлении в проект дополнения BPM .
    Картинка
    XAF

    Решение

    Картинка

    Мастер создания проекта помогает создать комплексное решение — Application Solution, которое может включать в себя несколько проектов. Например, для фреймворка .NET 6+ в состав такого решения могут входить такие проекты, как WinForms для разработки Windows-приложений, ASP.NET Core Blazor для создания веб-приложений. Кроме того, с помощью Мастера можно создать проект для Web API Application сервиса. У XAF есть собственный движок для написания функциональных тестов — EasyTest, который также доступен через Мастер создания проектов. При создании решения можно выбрать все предложенные опции, одну из них или несколько. Созданные проекты будут отображены в списке проектов обозревателя решения.

    Jmix

    Решение

    Картинка

    Jmix Studio предоставляет мастер для создания новых проектов Jmix. Этот мастер помогает настроить основные параметры и выбрать шаблон для создания проекта. С помощью шаблона можно создать full stack приложение, Jmix дополнение на Java или Kotlin, приложение REST Service или композитный проект.

    Проекты

    Картинка
    1. Общий модуль содержит бизнес-классы, классы для описания сущностей из предметной области и контроллеры с общей логикой. Модуль будет доступен для использования как в проекте для Windows, так и в проекте для Web. Количество модулей не ограничено; как правило, в ходе работы над проектом разработчики могут создавать свои модули.
    2. По одному модулю-проекту для каждой платформы (Windows или Web) — для реализации логики, характерной только для Windows или Web приложения.
    3. Web API модуль — проект для REST API сервиса.
    4. E2E Tests — модуль-проект для написания функциональных тестов на C#/VB.NET.

    Проекты

    Картинка

    По умолчанию приложение Jmix — это единый проект, в котором описаны слой доступа к данным, слой бизнес-логики и UI. Слой бизнес-логики взаимодействует с UI с помощью Java API.

    Модули

    По сути, проекты-модули XAF устроены по аналогии с проектами .NET Framework Class Library. Отличие заключается в том, что проекты-модули XAF содержат дополнительные связи и наследования, которые обеспечивают корректную работу механизмов XAF. Разработчик может создавать свои собственные проекты-модули.

    Модуль можно рассматривать как готовый пакет для определенной функциональности, которую разработчик создает самостоятельно или с использованием готовых модулей от XAF. При создании приложения XAF с помощью Мастера создания решений можно выбрать модуль с уже реализованной логикой и добавить его в решение. Всего в XAF имеется около 20 готовых модулей, например, аудит, карты, уведомления, отчеты, валидация.

    Дополнения и композитные проекты

    Для удобства структурирования сложных с точки зрения модели данных и бизнес-логики проектов, Jmix Studio предлагает технологию композитных проектов. Каждая функциональность или изолированная фича может быть выполнена в виде отдельного компонента и присоединена к единому проекту на этапе финальной сборки приложения. Studio позволяет разрабатывать несколько дополнений и приложений в рамках одного проекта IDE, даже если они находятся в разных репозиториях исходного кода. Это означает, что в разработке такого приложения могут участвовать большие команды.

    Дополнение в Jmix — это специализированное название для библиотеки, то есть набора предварительно скомпилированного кода и других ресурсов, которые могут быть использованы в приложениях. Дополнение создаётся по определённым правилам и использует некоторые возможности Jmix для автоматической интеграции предоставляемой функциональности в хост-приложение. Композитные проекты решают такую же задачу, как и модули в XAF. Однако подходы к проектированию архитектуры модулей и композитных проектов различаются. Для получения консультации по дизайну решения на Jmix можно оставить заявку.

    Создание модели данных

    XAF

    XAF работает с данными через ORM слой. Для создания модели в БД достаточно описать данные с помощью классов, все таблицы будут созданы автоматически.

    XAF поддерживает две реализации ORM:

    1. eXpressPersistent Objects (XPO) — технология DevExpress.
    2. Entity Framework Core (EF) — технология Microsoft.

    XAF поддерживает несколько способов создания модели данных и реализует три подхода:

    1. Code First, в котором бизнес-классы для описания сущностей предметной области создаются с помощью кода.
    2. Model First, в котором в редакторе создается схема данных, и на ее основе XAF автоматически создает классы. Схема данных создается в визуальном редакторе.
    3. Database First, где классы автоматически создаются платформой на основании уже существующей схемы данных.

    Также XAF предоставляет библиотеку бизнес-классов - набор классов, которые чаще всего встречаются в большинстве доменных областей: Person (Личность), Address (Адрес), Organization (Организация), PhoneNumber (Номер телефона) и так далее.

    Обычно бизнес-классы для описания сущностей предметной области создаются в независимом от платформы модуле, для того чтобы была возможность использовать одну модель данных из приложений для Windows и Web.

    Для того чтобы упростить процесс создания классов, XAF предлагает набор шаблонов. Навигация в галерею шаблонов происходит при добавлении нового элемента в модуль. В диалоговом окне открывается галерея шаблонов. В галерее можно выбрать шаблон и добавить его в проект. С помощью дизайнера модуля можно импортировать класс из библиотеки классов (данная возможность не доступна для .NET 6.)

    Если требуется работать с уже существующей базой данных, в XAF можно использовать инструменты EF Core или XPO для создания классов на основе таблиц базы данных.

    Jmix

    В Jmix также используется технология ORM для работы с данными. Для этих целей в платформу интегрирован фреймворк с открытым исходным кодом EclipseLink, реализующий стандарт JPA. В Jmix данные приложения представлены сущностями.

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

    Дизайнер сущностей помогает создать атрибуты сущности, установить между ними связи, определить правила валидации значений атрибутов и описать индексы. Jmix Studio автоматически генерирует код класса сущности и позволяет разработчику вносить в него изменения по необходимости.

    С помощью дизайнера сущностей можно создавать ссылочные атрибуты на другие сущности, даже если они находятся в разных базах данных. Это позволяет создать целостную модель данных, включающую данные из нескольких реляционных баз данных и других источников данных, таких как NoSQL базы данных или REST API.

    Переключение между способами работы с сущностями происходит с помощью вкладок редактора. На вкладке "Text" дизайнера модели данных разработчик видит код класса сущности. Класс сущности можно редактировать вручную, используя инструменты автодополнения и автоподсказки кода. На вкладке "Designer" расположен визуальный дизайнер сущностей. При внесении изменений в одну из вкладок изменения автоматически отображаются на другой.

    На третьей вкладке — "Indexes" — находится визуальный редактор для создания индексов.

    Jmix Studio позволяет создавать модель данных и стандартные экраны пользовательского интерфейса для существующей базы данных с помощью инструмента Reverse Engeneering. Достаточно просто подключить источник данных и, следуя инструкциям мастера, выполнить шаги для генерации классов объектов на основе выбранной схемы базы данных.

    Миграция схемы базы данных

    Миграция схемы базы данных или сокращённо миграция базы данных, — это процесс обновления схемы базы данных в соответствии с изменениями в модели данных приложения.

    XAF

    База данных создаётся при первом запуске приложения и обновляется при изменении номера версии приложения. Проверка совместимости версий проводится каждый раз при запуске приложения в режиме отладки. Проверяется наличие всех необходимых таблиц, столбцов и самой базы данных.

    Если версия базы отличается, то в режиме отладки возникает событие несоответствия версий, и в обработчике этого события вызывается встроенный в XAF метод, где реализована логика обновления базы данных.

    XAF не обновляет существующую схему базы данных при использовании Entity Framework. Для синхронизации модели данных приложения с базой данных рекомендуется использовать инструменты миграции EF Core, которые необходимо установить отдельно.

    Процесс проверки версий и обновление базы данных
    Jmix

    Jmix Studio создаёт скрипты миграции в формате Liquibase changelog, сравнивая текущее состояние сущностей модели данных с текущей схемой базы данных соответствующего хранилища данных. Этот процесс происходит автоматически при запуске приложения с использованием конфигурации Run/Debug. Файл changelog сохраняется в исходном коде приложения и интегрируется в состав бинарного артефакта. При необходимости разработчик может внести изменения в скрипт миграции или отменить его применение в текущей среде разработки.

    Доступ к данным

    В приложениях XAF все манипуляции с данными выполняются через Object Space. Object Space — это абстракция контекста базы данных, независимая от ORM. Интерфейс IObjectSpace предоставляет единый набор методов для манипуляций с данными, включая, среди прочего, методы CreateObject, GetObjectByKey, Delete и CommitChanges.

    Классы BaseObjectSpace и CompositeObjectSpace реализуют общий код методов работы с данными. CompositeObjectSpace и его потомки содержат реализацию операций с данными, специфичную для каждой ORM:

    1. XPObjectSpace — для модели данных XPO.
    2. EFCoreObjectSpace — для модели данных Entity Framework Core.

    В разработке эти классы напрямую редко используются, так как все взаимодействие с данными происходит через единый интерфейс IObjectSpace, который представляет более высокий уровень абстракции. Тем не менее они доступны разработчику в случае необходимости.

    Доступ к данным

    Entity Manager (менеджер сущностей) является ключевым интерфейсом, определённым в JPA (Java Persistence API). Он представляет собой контекст базы данных, выступает в роли посредника между кодом приложения и базой данных, а также управляет жизненным циклом сущностей — Java-объектов, которые отображаются на записи базы данных. EclipseLink, являясь реализацией JPA, предоставляет свою реализацию Entity Manager.

    Jmix предлагает собственную реализацию этого стандартного интерфейса, обладающую определёнными особенностями. В Jmix основным интерфейсом для работы с сущностями служит DataManager.

    DataManager позволяет загружать графы сущностей по идентификатору или запросу, сохранять измененные экземпляры или удалять их. DataManager поддерживает ссылки между сущностями из разных хранилищ данных как для JPA и DTO, так и для смешанных графов сущностей.

    В jmix доступно использование EntityManager напрямую, однако в таком случае работа с данными будет осуществляться в обход Jmix Seciurity.

    Пользовательский интерфейс

    XAF

    XAF позволяет создавать пользовательский интерфейс (UI) на различных технологиях как для Windows, так и для Web. В данном обзоре мы сосредоточимся на возможностях создания веб-приложений на технологии Blazor Server. Blazor — это технология от Microsoft, которая позволяет разработчикам создавать интерактивные веб-приложения, используя C# и .NET. Каждый компонент в Blazor веб-приложении определяет режим отрисовки, чтобы уточнить, где он будет отрисован: на стороне клиента с использованием WebAssembly или на стороне сервера. На момент написания обзора в XAF используется Blazor Server — интерактивная отрисовка компонентов происходит на стороне сервера. Это означает, что в данном случае Blazor объединяет логику приложения и обновления интерфейса на сервере, а обновления пользовательского интерфейса отправляются на клиент с использованием SignalR.

    Модель приложения Application Model

    XAF позволяет создавать пользовательский интерфейс для Windows и Web, опираясь на единую бизнес-логику благодаря модели приложения. Для создания модели приложения фреймворк анализирует проект, определяет бизнес-классы и анализирует их. Затем XAF создает метаданные — XML-файл, описывающий приложение, который используется для построения пользовательского интерфейса и называется моделью приложения (Application Model). Модель приложения используется в разработке пользовательского интерфейса.

    Несмотря на то, что модель приложения едина, а платформ много, XAF поддерживает кастомизацию и создание вариаций пользовательского интерфейса. Это означает, что XAF может поддерживать основную модель на разных уровнях. Например, нулевой слой — это результат первичной генерации модели на основании анализа кода бизнес-модулей приложения и модулей, на которые есть ссылки, за ним следуют слои, специфичные для различных платформ и другие.

    Модель приложения можно редактировать через XAFML (для всех слоев, кроме самого первого, сгенерированного автоматически). К модели есть доступ из кода. Кроме того, существует визуальный редактор модели приложения — Model Editor. Разработчики чаще всего используют этот редактор для работы над пользовательским интерфейсом. Редактор позволяет настраивать параметры, а также внешний вид представлений и форм.

    Jmix

    Jmix UI позволяет разрабатывать насыщенные веб-интерфейсы, используя Java/Kotlin и XML. Он основан на веб-фреймворке Vaadin Flow UI.

    В Jmix UI компоненты пользовательского интерфейса работают в той же JVM, что и бэкенд, что значительно упрощает работу с данными и вызов бизнес-логики. Кроме того, для работы с ним требуется минимальное знание современного стека JavaScript/HTML/CSS.

    Метаданные

    Каждая сущность со своими атрибутами отражается в метаданных приложения, которые используются механизмами фреймворка для получения полной информации о модели данных. Метаданные участвуют в формировании пользовательского интерфейса. Например, если в метаданных какой-либо атрибут помечен как доступный только для чтения, соответствующие компоненты пользовательского интерфейса будут отключены. Метаданные в Jmix решают те же задачи, что и модель приложения в XAF. Метаданные Jmix являются внутренним механизмом фреймворка и редко используются непосредственно в коде приложения.

    Экраны

    Экран (view) — это базовый строительный блок пользовательского интерфейса приложения. Он служит корнем иерархии визуальных компонентов и может содержать компоненты данных, действия и фасеты. Экран определяется классом Java. Класс экрана обычно связан с соответствующим XML-файлом, называемым дескриптором, который определяет содержимое экрана.

    Для работы с экранами в Jmix доступны следующие инструменты:

    1. Мастер создания экранов, который помогает создать экран из шаблона.
    2. Дизайнер экранов представляет собой набор панелей и инструментов, позволяющих разрабатывать макет экрана и задавать свойства компонентов пользовательского интерфейса в стиле WYSIWYG. Редактор XML экранов интегрирован с Дизайнером экранов, позволяя редактировать XML-файл напрямую или использовать панели дизайнера для генерации кода.

    Представления

    XAF

    В XAF существуют три основных типа представлений (View):

    1. Detail View — отображает детали одного экземпляра сущности.
    2. List View — отображает список экземпляров сущности.
    3. Dashboard View — позволяет расположить несколько компонентов и представлений на одном экране для создания комплексного представления данных и функциональности.
    Jmix

    В Jmix можно создать экраны из шаблонов, включая:

    1. List View — отображает список экземпляров сущности.
    2. Detail View — отображает детали одного экземпляра сущности.

    Для моделирования и запуска бизнес-процессов Jmix автоматически создаёт процессные формы.

    REST API

    XAF

    С помощью мастера создания решения можно создать веб-API-сервис.

    Автоматически создаются конечные точки для следующей функциональности:

    1. CRUD-операций с бизнес-классами (классами для описания сущностей предметной области).
    2. Вызова методов бизнес-объектов.
    3. Получения отчетов.
    4. Работы с файлами.
    5. CRUD-операций для неперсистентных объектов.

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

    Можно использовать различные методы аутентификации, такие как OAuth2, JWT или пользовательские стратегии, а также встроенную систему безопасности для фильтрации данных на основе прав доступа пользователей.

    С помощью ASP.NET Core OData 8.0 поддерживаются постраничная выборка, фильтрация и другие параметры OData. Сервис может быть размещен как часть проекта Blazor Server или как автономный проект ASP.NET Core. Swagger (OpenAPI) используется для документирования и тестирования конечных точек.

    Jmix

    Работа с бэкендом Jmix может осуществляться через Generic REST API, что позволяет создавать пользовательский интерфейс, используя любую доступную технологию.

    Jmix обеспечивает возможность работы с сущностями модели данных и сервисами бизнес-логики без необходимости написания собственных REST-контроллеров на бэкенде. Универсальный REST автоматически предоставляет конечные точки (endpoints) для следующих функций:

    • CRUD-операции с сущностями.
    • Вызов зарегистрированных методов сервисов.
    • Выполнение преднастроенных запросов JPQL.
    • Загрузка и выгрузка файлов.
    • Предоставление информации о модели данных.
    • Предоставление информации о текущем пользователе и его правах.

    REST API использует протокол OAuth2 для аутентификации и также поддерживает анонимный доступ. Все конечные точки REST API ограничивают доступ к данным в соответствии с настройками подсистемы безопасности.

    Безопасность

    Базовая подсистема безопасности XAF предоставляет механизмы аутентификации, управления пользователями, создания ролей и полномочий, их проверки, а также готовый экран входа в систему.

    Безопасность

    В простом случае Jmix предоставляет все необходимые компоненты безопасности — аутентификацию, авторизацию, управление пользователями и ролями — в рамках одного приложения. Пользователи управляются и аутентифицируются непосредственно приложением.

    Аутентификация

    Система безопасности поддерживает следующие методы аутентификации:

    1. Аутентификация через Windows Active Directory.
    2. Стандартная аутентификация.
    3. OAuth2 и пользовательская аутентификация.

    При использовании стандартной аутентификации система безопасности использует внутренний механизм аутентификации XAF и хранит учётные данные пользователей в базе данных приложения.

    Аутентификация

    Механизм аутентификации основывается на Spring Security. Jmix предлагает конфигурацию по умолчанию для Spring Security, а также генерирует экран входа в систему в проекте и предоставляет бин CurrentAuthentication для доступа к информации о текущем пользователе.

    Кроме того, можно использовать внешнюю службу управления идентификацией и доступом (IAM), такую как OIDC или LDAP.

    Роли и полномочия

    XAF Security System не опирается на стандартную систему авторизации ASP.NET Core и реализует собственные механизмы контроля доступа на основе ролей (Role-Based Access Control, RBAC). Это включает определение ролей, инкапсулирующих конкретные разрешения, и назначение этих ролей пользователям или группам пользователей.

    Из коробки предоставляется централизованный интерфейс для управления ролями, разрешениями, назначениями пользователей и настройками безопасности.

    Элементы системы безопасности доступны для взаимодействия через код и могут быть легко расширены.

    Роли и полномочия

    Когда пользователь взаимодействует с приложением, компонент фреймворка, отвечающий за управление доступом, запрашивается для авторизации его действий. Этот компонент, в свою очередь, извлекает информацию о текущих разрешениях пользователя из конфигурации ролей и на основании этой информации принимает решение.

    Роли и политики могут быть определены в приложении как на этапе разработки, с использованием аннотированных классов Java, так и во время выполнения, с использованием конфигурации, хранящейся в базе данных. Пользователь может обладать несколькими ролями двух различных типов: ресурсные роли и роли уровня строк.

    Когда в приложении осуществляется управление пользователями, администратор создаёт пользователей и назначает им роли через интерфейс приложения. Сущность User генерируется по умолчанию для нового проекта, но может быть исключена из проекта при использовании внешнего провайдера данных учётных записей.

    Развёртывание и масштабируемость приложения

    XAF использует модель размещения Blazor Server, при которой Blazor выполняется на сервере в рамках приложения ASP.NET Core. Обновления пользовательского интерфейса, обработка событий и вызовы JavaScript обрабатываются через SignalR. Для развертывания приложения требуется веб-сервер, способный хостить приложение ASP.NET Core. Blazor работает наилучшим образом при использовании WebSockets в качестве транспорта для SignalR.

    Приложение может быть развернуто в Azure. В Azure для приложений Blazor существуют дополнительные сервисы и варианты транспорта на выбор. Например, если WebSockets отключены, Azure App Service использует HTTP Long Polling для имитации реального соединения в режиме реального времени. Однако HTTP Long Polling значительно медленнее по сравнению с использованием WebSockets, и этот вариант рекомендуется использовать с осторожностью. Существует отдельный сервис Azure SignalR для развертывания Blazor Server приложений.

    Приложение также может быть развернуто на Windows с помощью IIS или на Linux с помощью Nginx/Apache (с использованием Docker/Kubernetes или без них).

    Масштабируемость

    Технология ASP.NET Core Blazor Server хранит состояния пользователя в памяти, чтобы обеспечить быстрые ответы на действия пользователя и обрабатывать данные на сервере. Эта архитектура подразумевает, что расход памяти увеличивается с ростом числа пользователей. После достижения определённого количества одновременных пользователей приложение может достичь предела доступной памяти хостинг-машины.

    Развёртывание и масштабируемость приложения

    Как и любое приложение на основе Spring Boot, приложение Jmix может быть собрано и развернуто в виде исполняемого файла JAR, файла WAR или в виде образа Docker.

    Самостоятельное развертывание: Приложения Jmix могут быть развернуты в любой среде, поддерживающей Java. Вы можете упаковать приложение в исполняемый JAR-файл и запустить его на любом Java-совместимом сервере приложений.

    Облако: Jmix-приложения могут быть развернуты в облачных сервисах, таких как AWS, Google Cloud или Azure, с использованием их средств развертывания. Jmix предлагает создание образов контейнеров для удобства использования на платформах, поддерживающих контейнеризацию, например Kubernetes или Docker.

    Масштабируемость

    Backend-часть пользовательского интерфейса является stateful и потребляет объём памяти сервера, пропорциональный количеству одновременных пользовательских сеансов. Поэтому Jmix UI подходит для приложений с предсказуемым и не массовым (до 100 000) количеством пользователей, одновременно работающих с системой. Для web-scale проектов и для обеспечения полной свободы настройки UI рассмотрите возможность создания frontend-приложения, используя традиционные frontend-технологии. Работа с backend Jmix при использовании отдельной frontend-технологии может осуществляться через Generic REST API.

    Требования к разработчику

    XAF

    Несмотря на то, что XAF помогает разработчикам экономить значительное время благодаря автоматизации многих процессов, сам фреймворк не покрывает абсолютно все аспекты разработки. Разработчикам необходимо следовать установленным правилам разработки, тестирования, развертывания и обслуживания. Знание Visual Studio, .NET, управления базами данных и общие знания в программировании являются обязательными. Наибольшую пользу от XAF получат разработчики, имеющие опыт в одной или нескольких из следующих областей:

    Разработчик XAF

    • Базовое понимание процесса разработки приложений Line-of-Business.
    • Знакомство с объектно-реляционным отображением (ORM) и паттернами проектирования/архитектуры пользовательского интерфейса (MVC).
    • Владение навыками объектно-ориентированного программирования на C# или VB.NET, знание Visual Studio и инфраструктуры .NET.
    • Базовое знакомство с целевыми платформами пользовательского интерфейса .NET (WinForms, ASP.NET) и сопутствующими технологиями (XML, SQL, JavaScript, HTML, CSS).
    Jmix

    Jmix представляет собой инструмент, который способствует повышению продуктивности разработчиков благодаря своей гибкости, мощным инструментам и возможностям для быстрой разработки. Для опытных специалистов это означает автоматизацию рутинных действий и фокус на реализации бизнес-логики конкретного приложения. Одновременно Jmix предоставляет прочную основу и интуитивно понятные инструменты для начинающих и менее опытных специалистов. Благодаря широкому спектру готовых компонентов, удобному интерфейсу и инструментам для быстрой разработки, новички могут быстро освоить базовые концепции и начать создавать эффективные веб-приложения, погружаясь в мир Java-технологий в процессе работы.

    Разработчик Jmix

    • Знания и навыки работы с Java, начиная с Java 8.
    • Опыт работы со стеком технологий Spring Framework и JPA.
    • Навык написания SQL-запросов.
    • Понимание базовых UI-технологий: HTML, CSS, веб-компоненты.
    • Опыт работы в профессиональных IDE: Visual Studio, IntelliJ IDEA, Eclipse.
    Таким образом XAF — это инструмент повышения продуктивности для разработчиков, у которых уже есть опыт в написании приложений для бизнеса.
    Jmix — это инструмент, повышающий продуктивность опытных разработчиков при создании разнообразных бизнес-приложений и облегчающий начинающим быстрый старт в Java-разработке.

    Выводы

    На самом высоком уровне абстракции у XAF и Jmix больше общего, чем различий. Платформы реализуют схожую server-side UI архитектуру на своем стеке технологий. Разработчик при создании приложения разрабатывает веб-UI, используя один язык программирования и библиотеку готовых веб-компонентов. Обе платформы предназначены для быстрой и эффективной разработки разнообразных прикладных бизнес-приложений.

    Чем же отличается Jmix? Основное отличие Jmix заключается в его построении на богатой экосистеме Spring Boot, которая предлагает множество готовых библиотек и обширную базу знаний на все случаи жизни. Разработчики могут работать в привычной для них среде разработки IntelliJ IDEA Community Edition. Использование расширения IDE — Jmix Studio — сокращает время, требуемое на написание рутинного кода, минимизирует ошибки и позволяет быстро начать использовать всю мощь экосистемы Java. Проект, созданный на основе Jmix, не содержит лицензионных ограничений вендора, так как фреймворк распространяется по лицензии Apache 2.0. Программный продукт, созданный на основе платформы Jmix, может быть внесен в Реестр отечественного ПО и распространяться на условиях коммерческой лицензии компании-разработчика продукта.