Внимание! Пожалуйста, ознакомьтесь со всеми комментариями с надписью “ATTENTION!”, потому что эти места потребуют от вас некоторых решений и/или действий.
Attention! Please find out all comments with ‘ATTENTION!’ because that is required some decisions or actions from you.
Для установки версии 8.x пожалуйста прочитайте статью wiki, в которой описано как очень просто установить шаблоны при помощи одной команды из командной строки на ваш рабочий компьютер. Также вы можете использовать расширение для Visual Studio Microservice-Template из marketplace.
To install version 8.x please, read wiki where you can find information about a simple way using one command in command prompt to install templates on your workstation. Another way to install extension is use Visual Studio marketplace Microservice-Template.
IdentityModule
Module
.IdentityModule
Module
.IdentityModule
Module
.IdentityModule
Module
.Вместо nuget-пакета OperationResultCore
в обоих шаблонах теперь используется более простая и современная реализация RFC7807 - Calabonga.Results
, которая существенно “облегчила” сериализацию выдаваемых результатов повысив параметры производительности в несколько раз.
OperationResultCore
удалена из обоих шаблонов.Calabonga.Results
установлена из обоих шаблонов.Новая и первая версия шаблонов для микросервисов на платформе NET8.
IdentityModule
: добавлена возможно авторизации и по Bearer
вдобавок к Cookie
.IdentityModule
: добавлена PolicyCorsName
и PolicyDefaultName
IdentityModule
и Module
: обновлена реализация EventItemEndpoints
и ProfilesEndpoints
чтобы можно было использовать Endpoint Explorer
для генерации .http
файлов для вызова методов прямо из Visual Studio
:
Microsoft.AspNetCore.OpenApi
для полноценной реализации OpenApi
. Удалены ненужные зависимости.appSettings.json
для develop
и production
развертывания.Обновлена конфигурация .editor.config
.
+[*.json]
+
+indent_size = 4
+indent_style = space
+tab_width = 4
# C# files
[*.cs]
@@ -218,10 +223,15 @@ dotnet_naming_style.instance_field_style.required_prefix = _
# ReSharper properties
max_line_length = 200
+resharper_arguments_anonymous_function = named
+resharper_blank_lines_after_multiline_statements = 1
+resharper_blank_lines_before_control_transfer_statements = 1
+resharper_csharp_keep_blank_lines_in_code = 1
resharper_csharp_max_line_length = 200
resharper_csharp_wrap_after_declaration_lpar = true
resharper_csharp_wrap_extends_list_style = chop_if_long
resharper_csharp_wrap_lines = false
+resharper_instance_members_qualify_declared_in = base_class
resharper_max_attribute_length_for_same_line = 300
resharper_place_type_constraints_on_same_line = true
resharper_wrap_before_arrow_with_expressions = true
Созданы шаблоны для dotnet CLI
. Теперь можно установить шаблоны очень просто через команду dotnet
. Например, чтобы установить шаблон для Microservice Identity Module
достаточно выполнить команду:
dotnet new install Calabonga.Microservice.IdentityModule.Template
А для установки Microservice Module
нужно такую команду:
dotnet new install Calabonga.Microservice.Module.Template
Проверить установлены ли шаблоны можно командой
dotnet new list
Команда выведет список всех установленных шаблонов:
Также после установки шаблонов, они станут доступы в Visual Studio и JetBrains Rider.
IRequest
и IRequestHandler
. Теперь запросы с перехватчиками объединены в один класс, что на самом деле гораздо удобнее.Пример использования шаблона для построения backend (API) для каталога товаров. В этом репозитории “пошаговая” реализация, которая записана на видео. Можно посмотреть примеры (examples of using) разных механизмов: Validation, Transactions, Notification and etc.
AutoMapper
, FluentValidation
, Microsoft.AspNetCore.Authentication
,Serilog
.Serilog
вынесена в appSettings.json
LoggerExtensions
удалены, потому что подключено Structural logging на базе Serilog
.StopTheHostException
переименован HostAbortedException
перехватывать его теперь стали по-новому.ValidationException
теперь работает через OperationResult
, для этого обновлен ValidatorBehavior
.GitInfo
, которая позволяла использовать версионирование на основе GIT, потому что при создании проекта вне папки репозитория появлялась ошибка: NETSDK1018 Invalid NuGet version string: '0.0.0+main.'.
. Пожалуйста, ознакомьтесь со всеми комментариями с надписью “ATTENTION!”, потому что эти места потребует от вас некоторых решений или действий. Например, использовать или не использовать версионирование на основе GIT возможностей.FluentValidation
для EventItemValidator
.ErrorHandlerMiddleware
для отображения ошибок валидации.Версия получила следующие изменения:
Mediatr
получила обновление, в том числе была удалена зависимость от nuget-пакета MediatR.Extensions.Microsoft.DependencyInjection
. А также изменилась регистрация зависимости.- services.AddMediatR(Assembly.GetExecutingAssembly());
+ services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Program>());
EntityFramework
.OpenIddict
:- <PackageReference Include="OpenIddict.AspNetCore" Version="3.1.1" />
+ <PackageReference Include="OpenIddict.AspNetCore" Version="4.0.0" />
IAccountService
. За счет этого существенно сокращено количество повторяющихся запрос в базу данных за информацией о пользователе.Шаблоны для создания проектов для микросервисной архитектуры успешно мигрировали на NET7. Обновились сборки всех необходимых nuget-пакетов, а также сами проекты теперь строятся на NET7. Не забудьте обновить CI/CD если будете публиковать новые версии для NET7.
Новые версии шаблонов теперь работают совместно. То есть теперь созданное приложение из шаблона Calabonga.Microservice.Module
может авторизоваться у приложения, которое создано из шаблона Calabonga.Microservice.IdentityModule
прямо после создания приложений из шаблонов.
В связи с тем, что обновления были в разных модулях в прошлый раз, шаблоны на данный момент имеют разные версии (В будущем это расхождение будет невелировано):
6.1.4
6.1.2
В новой версии 6.1.3
обновился метод авторизации по Authorization Code Flow
. Подключены механизмы, которые приведены в пример на сайте OpenIddict Samples. Теперь авторизация учитывает Consent
, а также подключены более жесткие требования к формированию id_token
и access_token
, которые рекомендованы стандартами OAuth2.0
.
В новой версии 6.1.2
добавлены некоторые инициализации для того, чтобы было проще подключить EntityFramework
провайдер для Microsoft SQL Server
(UseSqlClient). Добавленные строки кода были закоментированы, чтобы можно было оставить функциональность для IN-MEMORY режима.
В новой версии 6.1.1
удалены проекты из папки FullAPI (вместе с папкой). Версия с IdentityServer
больше не будет получать обновления, но пока останется доступной. Вы можете ее найти в папке MinimalAPI-IS4. Если вам еще нужны эти проекты, настоятельно рекомендую сделать fork моего репозитория.
На платформе NET6
(В папке AspNetCore v6.1) можно найти новую версию Nimble Framework
, который предназначен для быстрого создания микросервисной архитектуры. Nimble Framework
содержит IdentityModule
(AuthServer) и Module (microservice). Новая версия доступна для скачивания.
В статье блога и Видео презентация
Реализация OpenIddict
в шаблонах завершена, теперь формируются шаблоны для Visual Studio
.
Начались работы по переходу от IdentityServer4 на OpenIddict как основной сервис авторизации OAuth2.0. Причина переезда - скорое окончание срока поддержки IdentityServer4 и перехода его на платную основу.
На платформе NET6 (В папке AspNetCore v6.0
) теперь существует два вида шаблонов микросервисов (FullAPI и MinimalAPI), каждый из которых содержит IdentityModel и простой Module. Папка FullAPI содержит уже знакомые шаблоны микросервисов, просто они теперь переведены на NET6. А в папке MinimalAPI новая версия тех же шаблонов, которые построены на базе MinimalAPI.
ASP.NET Core
и EntityFramework Core
до версий (5.0.2). А также nuget-пакеты OperationResultCore
, Calabonga.Microservices.Core
и другие.Calabonga.Microservices.Core
.ASP.NET Core
и EntityFramework Core
(5.0.0).Swagger
) выведена информация о названии ветки (branch) и номер публикации (commit).Документация доступна на GitHub в разделе Wiki
Шаблон (template) для Visual Studio для построения инфраструктуры микросервисов на базе ASP.NET Core.
Visual Studio project template for microservice module base on ASP.NET Core
ASP NET Core 3.1 - Шаблоны для версии ASP.NET Core 3.1
ASP NET Core 5.0 - Шаблоны для версии ASP.NET Core 5.0
ASP NET Core 6.0 - Шаблоны для версии ASP.NET Core 6.0
Calabonga.AspNetCore.Controllers nuget-пакет на базе Mediatr
Calabonga.UnitOfWork.Controllers nuget-пакет на base Readonly/Writable controllers
Микросервисы: Шаблон для микросервиса
Микросервисы: Управление доступом
Микросервисы: Обмен данными между микросервисами
Микросервисы: Прокси для frontend
Про NimbleFramework можно найти следующие видео ролики. Они разделятся по версиям, но для всеобщего понимания настоятельно рекомендуется
Часть 0. Nimble: Установка шаблонов для микросервисов
Часть 1. Nimble: Демонстрация шаблона микросервиса на примере
Часть 2. Nimble: Установка шаблонов для микросервисов
Часть 3. Nimble: Основные и базовые понятия
Часть 4. Nimble: Создаем свой Query и Handler для IMediator
Микросервисы 2 (плей-лист)
Микросервисы (плей-лист)
Теперь шаблоны для генерации микросервисов доступны также и в Visual Studio Marketplace
Также можно установить прямо из Visual Studio
Микросервисы: Nimble Framework v.2
Nimble Framework для NET6 Готовится
Благодарности помощь каналу принимаются (Support This Project):
Пишите комментарии к видео на сайте www.calabonga.net
Сергей Калабонга (Calabonga)