Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork54
Templates for microservice architecture. Nimble Microservice Framework contains two modules. The first with OpenIddict and the second without OpenIddict. Templates are built on ASP.NET Core platform with different versions Core3.1, NET6, NET7 and NET8. You can create a new project extremely fast: in Visual Studio, Rider, dotnet CLI.
License
Calabonga/Microservice-Template
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Внимание! Пожалуйста, ознакомьтесь со всеми комментариями с надписью "ATTENTION!", потому что эти места потребуют от вас некоторых решений и/или действий.
Для установки шаблонов в среду разработки (Visual Studio,Rider,dotnet CLI) пожалуйста прочитайте статьюwiki, в которой описано, как очень просто установить шаблоны при помощи одной команды из командной строки на ваш рабочий компьютер.
- Calabonga.Microservice.IdentityModule.Template nuget-пакет для установки шаблона микросервиса в среду разработки (
Visual Studio,Rider,dotnet CLI) с OpenIddict. - Calabonga.Microservice.Module.Template nuget-пакет для установки шаблона микросервиса в среду разработки (
Visual Studio,Rider,dotnet CLI) без OpenIddict.
- Насайте разработчика.
- Видео презентация новой версииNimble Framework v.6.
- New ASP.NET Core RazorPages template added
Calabonga.AspNetCoreRazorPages.Template
- Nugets dependencies were updated
- СборкаMediatR заменена на подобнуюMediator.Net в связи с тем, что"MediatR is going commercial". Mediator.NET реализует всё, что есть в MediatR, только при помощи
SourceGenerator- что означает, что в принципе отсутстуетReflection, что, в свою очередь, существенно влияет на производительность в положительную сторону. - Automapper удален.
- Исправлены синтакситеческие опечатки.
- Обновлены некоторые зависимости (nuget-пакеты).
- Обновились nuget-пакеты в проекте
IdentityModule.- Microsoft.EntityFrameworkCore.Tools
- Microsoft.EntityFrameworkCore.InMemory
- OpenIddict.EntityFrameworkCore
- Microsoft.EntityFrameworkCore
- Microsoft.AspNetCore.Identity.EntityFrameworkCore*
- FluentValidation
- Обновились nuget-пакеты в проекте
Module.- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.InMemory
- Microsoft.AspNetCore.Identity.EntityFrameworkCore
- FluentValidation
- FluentValidation.DependencyInjectionExtensions
- MediatR
- Microsoft.AspNetCore.Authentication.OpenIdConnect
- Microsoft.AspNetCore.Authentication.JwtBearer
- Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter
- Microsoft.AspNetCore.OpenApi
- Microsoft.EntityFrameworkCore.Tools
- Обновились nuget-пакеты в проекте
IdentityModule.Calabonga.UnitOfWork6.0.0Swashbuckle.AspNetCore.SwaggerUI7.3.1
- Обновились nuget-пакеты в проекте
Module.Calabonga.UnitOfWork6.0.0Swashbuckle.AspNetCore.SwaggerUI7.3.1
- При создании нового проекта из шаблона теперь название задается правильно
- Обновились nuget-пакеты в проекте
IdentityModule. - Обновились nuget-пакеты в проекте
Module.
- Обновились nuget-пакеты в проекте
IdentityModule.OpenIddict.EntityFrameworkCore 6.0.0OpenIddict.AspNetCore 6.0.0
- OpenIddict обновления для 6.0.0. Их много, но основное то, что
Logoutизменен наEndSession:- OpenIddictConstants.Permissions.Endpoints.Logout,+ OpenIddictConstants.Permissions.Endpoints.EndSession,
- Создана новая папка в репозитории
AuthClientSamples, в которую добавлен проектCalabonga.BlazorAppна базеBlazor Web App, как демонстрация исползованияCalabonga.Microservice.IdentityModuleв качестве сервера авторизации Blazor-приложений. Больше информации и c картинками наWiki.
- Подключен
EnableLogoutEndpointPassthroughendpoint, а такжеSetIntrospectionEndpointUris. - Подключена поддержка
PKCEдляAuthorization Code Flow. - Обновились nuget-пакеты в проекте
IdentityModule. - Обновились nuget-пакеты в проекте
Module.
- Обновилась версия платформы NET9.0, установлены nuget-пакеты, соответствующие версии.
- Подключен
Microsoft.AspNetCore.OpenApiкак основной генератор документации. Swashbuckle.AspNetCorenuget-пакет удален.Swashbuckle.AspNetCore.SwaggerUInuget-пакет установлен для использования как UI для интерактивного использования OpenApi документации (openapi/v1.json).- Настройки CORS обновлены
- Сборка CI/CD переведена на использование NET9,
- Из репозитория удалена папка
Output, где хранились собранные сборки предыдущих версий. - Из репозитория удален проект (папка
VSIX) с расширением дляVisual Studio, так поддерживать данный плагин нецелесообразно, в виду просты использования шаблонов для Visual Studio. - Из репозитория удалена папка
IdentityServer4Mvc, где хранились формы MVC-проекта для IdentityServer4. - Из репозитория удален проект
Builder(папка Builder), который позволял "вручную" собирать проекты шаблонов. Данный функционал больше не требуется.
- Обновились nuget-пакеты в проекте
IdentityModule - Обновились nuget-пакеты в проекте
Module.
- Обновились nuget-пакеты в проекте
IdentityModule - Обновились nuget-пакеты в проекте
Module.
- Обновились nuget-пакеты в проекте
IdentityModule - Обновились nuget-пакеты в проекте
Module.
- Обновились nuget-пакеты в проекте
IdentityModule - Обновились nuget-пакеты в проекте
Module. - Исправлена ошибка генерации решения из шаблона: дублирование sln-файла. Спасибоandrew-moiseyev.
- Обновлены проекты nuget-templates для обоих tool CLI.
- Обновились nuget-пакеты
- Исправлены некоторые синтаксические ошибки.
Вместо nuget-пакетаOperationResultCoreв обоих шаблонах теперь используется более простая и современная реализация RFC7807 -Calabonga.Results, которая существенно "облегчила" сериализацию выдаваемых результатов повысив параметры производительности в несколько раз.
- Сборка
OperationResultCoreудалена из обоих шаблонов. - Сборка
Calabonga.Resultsустановлена из обоих шаблонов. - Обновились nuget-пакеты
- Удалены ненужные архивы старых версий на платформах ниже версии 8.x.
- Удалены артефакты, которые позволяли генерировать шаблоны без использования template-проектов.
Новая и первая версия шаблонов для микросервисов на платформе NET8.
Произведен некоторый рефакторинг папок и, соответственно, namespace в шаблонах, чтобы соблюсти договоренности о именованиях.
Обновлены nuget-пакеты
IdentityModule: добавлена возможно авторизации и поBearerвдобавок кCookie.IdentityModule: добавленаPolicyCorsNameиPolicyDefaultNameIdentityModuleиModule: обновлена реализацияEventItemEndpointsиProfilesEndpointsчтобы можно было использоватьEndpoint Explorerдля генерации.httpфайлов для вызова методов прямо изVisual Studio:Подключена сборка
Microsoft.AspNetCore.OpenApiдля полноценной реализацииOpenApi. Удалены ненужные зависимости.Произведены другие мелкие правки, в том числе синтаксические.
Из репозитория удалены исходные файлы для NET 5, а также готовые архивы для использования NET 5.
Обновлены nuget-пакеты
Небольшие правки по оптимизации
appSettings.jsonдляdevelopиproductionразвертывания.Добавлена обязательная проверка возможных NullReferenceException в файл проекта для каждого из шаблонов.
- <PropertyGroup>- <TargetFramework>net7.0</TargetFramework>- <Nullable>enable</Nullable>- <ImplicitUsings>enable</ImplicitUsings>- </PropertyGroup>+ <PropertyGroup>+ <TargetFramework>net7.0</TargetFramework>+ <Nullable>enable</Nullable>+ <ImplicitUsings>enable</ImplicitUsings>+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>+ <WarningsAsErrors>enable</WarningsAsErrors>+ </PropertyGroup>
Обновлена конфигурация
.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 propertiesmax_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 = 1resharper_csharp_max_line_length = 200resharper_csharp_wrap_after_declaration_lpar = trueresharper_csharp_wrap_extends_list_style = chop_if_longresharper_csharp_wrap_lines = false+resharper_instance_members_qualify_declared_in = base_classresharper_max_attribute_length_for_same_line = 300resharper_place_type_constraints_on_same_line = trueresharper_wrap_before_arrow_with_expressions = true
- Сделан рефакторинг папок в проектах с целью добиться максимального соответствия концепции Clean Architecture, и в частности Vertical Slice Architecture. Выпущена
- Обновлены nuget-пакеты некоторых базовых сборок
- Исправлены мелкие недочеты (naming convention, syntax issies, etc.)
Созданы шаблоны для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.
- Обновлены nuget-пакеты
- Немного изменена структура классов для наследников от
IRequestиIRequestHandler. Теперь запросы с перехватчиками объединены в один класс, что на самом деле гораздо удобнее. - Поправлены некоторые описания Summary
Пример использования шаблона для построения backend (API) для каталога товаров. В этом репозитории "пошаговая" реализация, которая записана на видео. Можно посмотреть примеры (examples of using) разных механизмов: Validation, Transactions, Notification and etc.
- Обновлены сборки (nuget) для
AutoMapper,FluentValidation,Microsoft.AspNetCore.Authentication,Serilog. - Конфигурация для
Serilogвынесена вappSettings.json LoggerExtensionsудалены, потому что подключено Structural logging на базеSerilog.- Потому как
StopTheHostExceptionпереименованHostAbortedExceptionперехватывать его теперь стали по-новому. - Перехват исключений
ValidationExceptionтеперь работает черезOperationResult, для этого обновленValidatorBehavior.
- Обновлены сборки (nuget) для OpenIddict (OAuth2.0).
- Из шаблона удалена сборка
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. - Обновилась версия для расширение для Visual Studio (VSIX).
- Обновлены почти все nuget-пакеты, в том числе и один из самых важных
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 прямо после создания приложений из шаблонов.
В связи с тем, что обновления были в разных модулях в прошлый раз, шаблоны на данный момент имеют разные версии (В будущем это расхождение будет невелировано):
- Calabonga.Microservice.IdentityModule имеет версию
6.1.4 - Calabonga.Microservice.Module имеет версию
6.1.2
- Обновлены сборки (nuget-пакеты)
- Удалены шаблоны, которые использовали IdentityServer4 в качестве сервера авторизации.
- Добавлена сборкаCalabonga.AspNetCore.AppDefinitions, которая подключает возможность использования AppDefinitions в проектах на платформе ASP.NET Core.
В новой версии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 моего репозитория.
- Обновлены nuget-пакеты, которые использованы в шаблонах (EntityFramework, FluentValidation).
- Удалены старые проекты.
- Обновлены собранные архивы для Visual Studio в папке OUTPUT.
На платформеNET6 (В папке AspNetCore v6.1) можно найти новую версиюNimble Framework, который предназначен для быстрого создания микросервисной архитектуры.Nimble Framework содержитIdentityModule (AuthServer) и Module (microservice). Новая версия доступна для скачивания.
- Удален IdentityServer4 как основа для аутентификации и авторизации на базе OAuth2.0. Теперь Nimble Framework использует для шаблона с сервером авторизации OpenIddict, который также реализует спецификации OAuth2.0.
- Обновлен механизм авторизации на странице swagger. Теперь используется Authorization Code Flow, который реализует форму входа. Это позволит использовать шаблон "из коробки".
- Обновлен механизм авторизации для второстепенных сервисов (механизм передачи ролей в токен)
- Обновлены почти все сборки (переведены на NET6), которые использованы в шаблонах
- Реализована система Definitions
- Обновлены nuget-пакеты Automapper и Mediatr
- Обновились сборки для ASP.NET Core, EntityFrameworkCore
- Добавлена информация к шаблону о его времени сборке и прочая информация про Copyright
- Обновлен "сборщик" шаблонов, который позволяет быстро обновлять solutions
В статье блога иВидео презентация
РеализацияOpenIddict в шаблонах завершена, теперь формируются шаблоны дляVisual Studio.
Начались работы по переходу от IdentityServer4 на OpenIddict как основной сервис авторизации OAuth2.0. Причина переезда - скорое окончание срока поддержки IdentityServer4 и перехода его на платную основу.
На платформе NET6 (В папкеAspNetCore v6.0) теперь существует два вида шаблонов микросервисов (FullAPI и MinimalAPI), каждый из которых содержит IdentityModel и простой Module. Папка FullAPI содержит уже знакомые шаблоны микросервисов, просто они теперь переведены на NET6. А в папке MinimalAPI новая версия тех же шаблонов, которые построены на базеMinimalAPI.
- Шаблоны микросервисов переведены на новую версию NET6. Обновлены почти все файлы, использованы новые "фишки", которые появились в C#.
- Обновились сборки для ASP.NET Core, EntityFrameworkCore и Swagger (OpenAPI). Теперь используются версии NET6.
- Удалены дубликаты контроллеров, которые демонстрировали использовать подхода Readonly/Writable (Calabonga.UnitOfWork.Controllers). Теперь остался только один пример, построенный на базе Mediatr.
- Обновлена инфраструктура папок. Использована Vertical Slice Architecture, которую представил Jimmy Bogard.
- Обновилось расширение VSIX-расширения для Visual Studio.
- Удалены старые шаблоны для версий NET Core 2.2 и NET Core 3.0.
- Началась разработка шаблонов для новой версии.
- Обновились сборки для ASP.NET Core, EntityFrameworkCore и Swagger (OpenAPI). А также nuget-пакеты Calabonga.Microservices.Core, FluentValidation и другие.
- Добавлено несколько комментариев в код для обеспечения определенности в действиях
- Обновилось расширение VSIX-расширения для Visual Studio.
- Обновились сборки для ASP.NET Core, EntityFrameworkCore и Swagger (OpenAPI). А также nuget-пакет FluentValidation и другие.
- Конструкции некоторых методов переведин на lambda-выражения, чтобы следовать моде.
- Обновилось расширение VSIX-расширения для Visual Studio.
- Обновились сборки для ASP.NET Core и EntityFrameworkCore. А также nuget-пакеты OperationResultCore, Calabonga.Microservices.Core, Swagger, FluentValidation и другие.
- Обновились метаданные, используемые для VSIX-расширения для Visual Studio.
- Исправлено несколько опечаток.
- Обновились сборки для ASP.NET Core и EntityFrameworkCore. А также nuget-пакеты OperationResultCore, Calabonga.Microservices.Core, Swagger, FluentValidation и другие.
- Стандартный logger заменен на Serilog. Теперь читать логи стало проще.
- Исправлено несколько опечаток.
- Обновились сборки для ASP.NET Core и EntityFrameworkCore. А также nuget-пакеты OperationResultCore, Calabonga.Microservices.Core и другие.
- Реализация Mediatr-запросов (Request) из классов превратились в записи (class -> record) С#.
- Удалена зависимость от некоторых сборок, которые вынесены на более высокий уровень. Это позволит обновлять их отдельно.
- Исправлено несколько опечаток.
- Обновились сборки для ASP.NET Core и EntityFrameworkCore до версий (5.0.4). А также nuget-пакеты OperationResultCore, Calabonga.Microservices.Core и другие.
- Реализация Mediatr-запросов из контроллеров перенесены в проекты шаблонов из сборки Calabonga.AspNetCore.Controllers, чтобы примеры использования были доступны разработчику.
- Применены языковыефишки из C# 9.0. Другими словами, был неслабый рефакторинг кода для оптимизации.
- Исправлено несколько опечаток.
- Обновились сборки для
ASP.NET CoreиEntityFramework Coreдо версий (5.0.2). А также nuget-пакетыOperationResultCore,Calabonga.Microservices.Coreи другие.
- В шаблоне микросервиса с IdentityServer4 и шаблоне без него удалены проекты xxx.Core. Файлы из этих проектов перенесены в проект xxx.Entities. Ссылки на Exceptions вынесены в nuget-пакет
Calabonga.Microservices.Core. - В шаблоне микросервиса с IdentityServer4 добавлена возможность аутентификации как для Cookie типа, так и для Bearer. Да! Теперь настроено два типа аутентификации.
- Применены языковыефишки из C# 8.0. Другими словами, был неслабый рефакторинг кода для оптимизации.
- Исправлено множество опечаток.
- Все проекты во всех решениях (solutions) обновились до версии .NET 5.0.
- Обновились nuget-сборки для
ASP.NET CoreиEntityFramework Core(5.0.0). - Добавилась реализация логирования, как пример использования, который описан на видеоILogger в ASP.NET Core
- На страницу API (
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)
About
Templates for microservice architecture. Nimble Microservice Framework contains two modules. The first with OpenIddict and the second without OpenIddict. Templates are built on ASP.NET Core platform with different versions Core3.1, NET6, NET7 and NET8. You can create a new project extremely fast: in Visual Studio, Rider, dotnet CLI.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors5
Uh oh!
There was an error while loading.Please reload this page.










