Calabonga.Microservices.Tracker
1.0.0
See the version list below for details.
dotnet add package Calabonga.Microservices.Tracker --version 1.0.0
NuGet\Install-Package Calabonga.Microservices.Tracker -Version 1.0.0
<PackageReference Include="Calabonga.Microservices.Tracker" Version="1.0.0" />
paket add Calabonga.Microservices.Tracker --version 1.0.0
#r "nuget: Calabonga.Microservices.Tracker, 1.0.0"
// Install Calabonga.Microservices.Tracker as a Cake Addin
#addin nuget:?package=Calabonga.Microservices.Tracker&version=1.0.0
// Install Calabonga.Microservices.Tracker as a Cake Tool
#tool nuget:?package=Calabonga.Microservices.Tracker&version=1.0.0
Что такое TraceId
В микросервисной архитектуре много сервисов по определению. Значит одна бизнес-операция может "пролегать" через несколько сервисов, а значит множество REST-запросов "полетят" по разным WebAPI. Например, оплата в интернет-магазине товара является бизнес-операцией, которая может состоять из нескольких запросов: оплата счета, отправка уведомлений, сбор статистики и т.д. И каждый из перечисленных запросов может (и должен) обрабатываться отдельным сервисом. Вопрос, как фильтровать все запросы для одной бизнес-операции чтобы отследить результаты? Ответ - надо чтобы все запросы были помечены одной и той же меткой (идентификатором). Такой идентификатор обычно называют CorrelationId (я называю TraceId, потому что так короче и писать проще).
Как это работает
Работает система на базе заголовков (headers) запросов. И в REST-запросах, и в MessageQueue-запросах... Почему используются "заголовки"? Перефразирую вопрос, почему нельзя сделать ViewModel, к котором будет TraceId? Тезисно:
- Потому что эта операция стоит над бизнес-логикой и, следовательно, не должна смешиваться.
- Потому что ваши ViewModels будут меняться, появляться, исчезать, а запросы изменяются очень и очень редко.
- Потому что обработка TraceId происходит в том числе и другими сервисами. Например, для сбора статистики или мониторинга. А ваши ViewModels никто "залезать" не будет.
Как реализовать в ASP.NET Core?
Уже готовых решений в интернете полным-полно. Я использую библиотеку Calabonga.Microservices.Tracker, которой решил поделиться совершенно недавно. Как это работает.
- Установливаете nuget-пакет
- Настраиваете пару параметров
- И вуаля!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection (>= 3.1.3)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.3)
- Microsoft.Extensions.Http (>= 3.1.3)
- Microsoft.Extensions.Logging.Abstractions (>= 3.1.3)
- Microsoft.Extensions.Options (>= 3.1.3)
-
.NETStandard 2.1
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection (>= 3.1.3)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.3)
- Microsoft.Extensions.Http (>= 3.1.3)
- Microsoft.Extensions.Logging.Abstractions (>= 3.1.3)
- Microsoft.Extensions.Options (>= 3.1.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.1 | 203 | 2/14/2024 |
4.0.0 | 1,317 | 4/20/2023 |
3.0.0 | 946 | 1/26/2021 |
1.0.1 | 362 | 12/14/2020 |
1.0.1-beta1 | 246 | 12/14/2020 |
1.0.0 | 502 | 4/11/2020 |
1.0.0-beta2 | 364 | 4/10/2020 |
1.0.0-beta1 | 352 | 4/9/2020 |
First release