Nimble Framework - шаблоны для микросервисной архитектуры

ru-RU | создано: 28.10.2019 | опубликовано: 28.10.2019 | обновлено: 28.10.2019 | просмотров за всё время: 35

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:

  1. Создание микросервиса с сервером авторизации (IdentityServer4). Данныйй шаблон может быть использован как отдельное приложение для создания backend как API для Single Page Application (SPA).
  2. Создание микросервиса без сервера авторизации. Обычно используется как сервис, который должен иметь возможность проходить аутентификацию и авторизацию на других сервисах, присутствующих в микросервисной архитектуре.

Установка

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

Для того чтобы установить шаблоны в Visual Studio надо:

  1. Скачайте шаблоны той версии ASP.NET Core, которую вы используете.

  2. Скопируйте *.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. Документация будет пополняться по мере того, как будут появляться вопросы от пользователей.