Внимание! Пожалуйста, ознакомьтесь со всеми комментариями с надписью “ATTENTION!”, потому что эти места потребуют от вас некоторых решений и/или действий.
Для установки шаблонов в среду разработки (Visual Studio, Rider, dotnet CLI) пожалуйста прочитайте статью wiki, в которой описано, как очень просто установить шаблоны при помощи одной команды из командной строки на ваш рабочий компьютер.
Visual Studio, Rider, dotnet CLI) с OpenIddict.Visual Studio, Rider, dotnet CLI) без OpenIddict.Calabonga.AspNetCoreRazorPages.TemplateSourceGenerator - что означает, что в принципе отсутстует Reflection, что, в свою очередь, существенно влияет на производительность в положительную сторону.IdentityModule.
Module.
IdentityModule.
Calabonga.UnitOfWork 6.0.0Swashbuckle.AspNetCore.SwaggerUI 7.3.1Module.
Calabonga.UnitOfWork 6.0.0Swashbuckle.AspNetCore.SwaggerUI 7.3.1IdentityModule.Module.IdentityModule.
OpenIddict.EntityFrameworkCore 6.0.0OpenIddict.AspNetCore 6.0.0Logout изменен на EndSession:
```diff
AuthClientSamples, в которую добавлен проект Calabonga.BlazorApp на базе Blazor Web App, как демонстрация исползования Calabonga.Microservice.IdentityModule в качестве сервера авторизации Blazor-приложений. Больше информации и c картинками на Wiki.EnableLogoutEndpointPassthrough endpoint, а также SetIntrospectionEndpointUris.PKCE для Authorization Code Flow.IdentityModule.Module.Microsoft.AspNetCore.OpenApi как основной генератор документации.Swashbuckle.AspNetCore nuget-пакет удален.Swashbuckle.AspNetCore.SwaggerUI nuget-пакет установлен для использования как UI для интерактивного использования OpenApi документации (openapi/v1.json).Output, где хранились собранные сборки предыдущих версий.VSIX) с расширением для Visual Studio, так поддерживать данный плагин нецелесообразно, в виду просты использования шаблонов для Visual Studio.IdentityServer4Mvc, где хранились формы MVC-проекта для IdentityServer4.Builder (папка Builder), который позволял “вручную” собирать проекты шаблонов. Данный функционал больше не требуется.IdentityModuleModule.IdentityModuleModule.IdentityModuleModule.IdentityModuleModule.Вместо nuget-пакета OperationResultCoreв обоих шаблонах теперь используется более простая и современная реализация RFC7807 - Calabonga.Results, которая существенно “облегчила” сериализацию выдаваемых результатов повысив параметры производительности в несколько раз.
OperationResultCore удалена из обоих шаблонов.Calabonga.Results установлена из обоих шаблонов.Новая и первая версия шаблонов для микросервисов на платформе NET8.

IdentityModule: добавлена возможно авторизации и по Bearer вдобавок к Cookie.IdentityModule: добавлена PolicyCorsName и PolicyDefaultNameIdentityModule и 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.jsonLoggerExtensions удалены, потому что подключено 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.46.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.
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)
