Nimble Framework
My Frameworks | создано: 28.10.2019 | опубликовано: 28.10.2019 | обновлено: 13.01.2024 | просмотров: 2396
Nimble Framework позволяет упростить создание микросервисов или backend-сервера для SPA. Из шаблона можно легко создать приложение на базе ASP.NET Core 2.2 (или ASP.NET Core 3.0) и связать эти приложения в сеть микросервисов.
Nimble Framework
В предыдущей статье "Шаблон для микросервисов" я рассказал про общие понятия, которые реализованы в шаблоне. Теперь немного больше конкретики и другой полезной информации. Nimble Framework появился в виду того, что частое создание микросервисов занимает много времени. Особенно, когда эти микросервисы объединены в одну архитектуру и поэтому должны быть связаны между собой. Для облегчения задачи "введение нового сервиса в систему" и были придуманы шаблоны для их создания.
Nimble Framework представляет собой набор из двух шаблонов для Visual Studio для создания проектов ASP.NET Core.
Nimble Framework - это набор шаблонов для построения микросервисной архитектуры на платформе ASP.NET Core. На данный момент существуют версии для ASP.NET Core 2.2 и ASP.NET Core 3.0.
Nimble Framework (далее Nimble) позволяет создавать из шаблонов готовые к использованию приложения API для дальнейшего использования либо как самостоятельный backend для Single Page Application (SPA), либо как часть микросервисной архитектуры. Следует иметь в виду, что это созданный из шаблона сервис является хорошей отправной точкой для программирования сервисов. В него заложены базовые функции и возможности. Код всё равно придется писать! :)
Видео
Есть видео для версии шаблонов для ASP.NET Core 2.2 и для версии шаблонов для ASP.NET Core 3.2. Обе версии имеют очень много общего и, соответственно, видео ролики существенно дополняются друг друга. Настоятельно рекомендую к просмотру обеих плей-листов. Дополнением к рекомендация является подборка, где на примере конкретной задачи показано практическое использование шаблонов (версия для ASP.NET Core 2.2).
Типы шаблонов
Существует два типа шаблонов для создания приложения на ASP.NET Core:
- Создание микросервиса с сервером авторизации (IdentityServer4). Данныйй шаблон может быть использован как отдельное приложение для создания backend как API для Single Page Application (SPA).
- Создание микросервиса без сервера авторизации. Обычно используется как сервис, который должен иметь возможность проходить аутентификацию и авторизацию на других сервисах, присутствующих в микросервисной архитектуре.
Установка
Установка шаблонов очень проста. В планах сделать VSIX-расширение для Visual Studio, чтобы установка не только упростилась, но и появилась возможность автоматически обновлять плагин при появлении новых версий.
Для того чтобы установить шаблоны в Visual Studio надо:
-
Скачайте шаблоны той версии ASP.NET Core, которую вы используете.
-
Скопируйте *.zip архивы, которые вы скачали в папку где находятся шаблоны для Visual Studio. Например, по умолчанию для Visual Studio 2019, в Windows системе это папка находится по адресу c:\MyDocuments\Visual Studio 2019\Templates\ProjectTemplates.
Внимание! Не надо распаковывать файлы.
Существуют две версии шаблонов, которые мы можете скачать.
ASP.NET Core 2.2 - Шаблоны для версии ASP.NET Core 2.2
ASP NET Core 3.0 - Шаблоны для версии ASP.NET Core 3.0
Создание сервисов
При наличии двух шаблонов, как вы понимаете, из них можно создать только два типа сервиса. Микросервис с сервером авторизации (IdentityServer4) и без него. Процесс создания очень похож, поэтом я опишу для сервиса с IdentityServer4, как более продвинутого типа микросервиса. Пошаговая инструкция описана в репозитории на github.com.
Какие проекты создаются в микросервисе
При генерации приложения из любого шаблона (с IdentityServer4 и без него) создаются четыре проекта. В зависимости от того как мы их назвали может менять префиксы. Однако, суффиксы всегда остаются. Предположим, что вы назвали своё приложение Calabonga.Microservice.IdentityModule2
тогда Visual Studio создаст для вас следующие проекты:
- Calabonga.Microservice.IdentityModule2.Core
- Calabonga.Microservice.IdentityModule2.Entities
- Calabonga.Microservice.IdentityModule2.Data
- Calabonga.Microservice.IdentityModule2.Web
Список показан в порядке следования зависимостей. То есть .Core используется в .Entities, .Entities используется в .Data, .Data используется в .Web.
Именно в такой последовательно при наличие ошибок должны собираться (Build) проекты.
Calabonga.Microservice.IdentityModule2.Core
Проект содержит базовые классы, перечисления (enum), константы, и прочие общие элементы, которые могут быть использованы во остальных проектах приложения.
Calabonga.Microservice.IdentityModule2.Entities
Проект содержит сущности, которые являются моделями (бизнес-моделями) и должны храниться в БД (DbContext).
Calabonga.Microservice.IdentityModule2.Data
Проект содержит ApplicationDbContext, который является наследником от DbContext (EntityFramework Core). А это значит, что все команды по работе EntityFramework Core надо направлять на этот проект.
Calabonga.Microservice.IdentityModule2.Web
Проект является основным и стартовым. В нем и содержаться все контроллеры, классы, ViewModels и т.д. и .т.п.
Папки и файлы
Чтобы проще было ориентироваться в проекте важно знать из чего он состоит и как всё устроено. Файлы, папки и их предназначение в проектах имеют договоренности по именованию и их место положению. Они достаточно подробно описаны в репозитории на github.com.
Наполнение данными
Перед тем как создавать проект, можно в специальном методе прописать данные, которые должны появиться в системе сразу при первом старте. Такие данные нужно заполнить в методе Seed. Примером таких данных может послужить данные о пользователе, который является администратором системы. И который в последствии сможет раздать права доступа другим пользователям. Опять же, всё достаточно подробно я описал в самом репозитории.
Startup файл
Файл Setup.cs является отправной точкой при запуске приложения. В нем происходит настройка системы и платформы для корректной работы.
Engine папка
В папке Engine, по большому счету, и находится фреймворк Nimble. Всё остальное - антураж!
Swagger как UI
И в версии для 2.2 и для версии 3.0 в шаблонах используется очень полезный инструмент - Swagger.
Automapper
Для маппинга используется фреймворк AutoMapper.
Настройки приложения
У каждого приложение есть настройки. В Nimble есть файл CurrentAppSettings, который может быть сериализован в JSON, и вливаться как зависимость при помощи IOptions<T>.
Контроллеры и методы
Понимание как работают контроллеры и их методы дает свободу по управлению разработкой. Стань свободным!
Управление правами и доступов
Аутентификация и авторизация построена на базе IdentityServer4.
Пример использования
Пример создание сущности Product покажет основные моменты разработки и проектированию.
Заключение
Надо ли говорить, что сам Nimble Framework лежит в открытом репозитории и вы можете принять участие в его формировании? В любом случае, фреймворк будет развиваться и для последующих версий ASP.NET Core. Документация будет пополняться по мере того, как будут появляться вопросы от пользователей.