Knihovny a frameworky

.NET, NuGet balíčky a front-end knihovny – k čemu slouží, proč je používáme a v jaké verzi běží.

Na této stránce

V jedné větě: Základem je .NET 10 / ASP.NET Core; nad ním EF Core pro databázi, RabbitMQ.Client pro zprávy, OpenTelemetry a Serilog pro observabilitu a pár drobných knihoven pro UI a tuto dokumentaci.

Verze v běžící aplikaci

Balíček Verze Projekty
MailKit 4.18.2 MiniShop.Infrastructure
Markdig 1.5.1 MiniShop.Web
Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.14 MiniShop.Infrastructure
Microsoft.AspNetCore.OpenApi 10.0.14 MiniShop.Web
Microsoft.EntityFrameworkCore.Sqlite 10.0.14 MiniShop.Infrastructure
Microsoft.Extensions.Http.Resilience 10.11.0 MiniShop.ServiceDefaults
Microsoft.Extensions.ServiceDiscovery 10.11.0 MiniShop.ServiceDefaults
OpenTelemetry.Exporter.OpenTelemetryProtocol 1.20.1 MiniShop.ServiceDefaults
OpenTelemetry.Extensions.Hosting 1.20.1 MiniShop.ServiceDefaults
OpenTelemetry.Instrumentation.AspNetCore 1.20.1 MiniShop.ServiceDefaults
OpenTelemetry.Instrumentation.EntityFrameworkCore 1.20.0-beta.1 MiniShop.ServiceDefaults
OpenTelemetry.Instrumentation.Http 1.20.1 MiniShop.ServiceDefaults
OpenTelemetry.Instrumentation.Runtime 1.20.1 MiniShop.ServiceDefaults
RabbitMQ.Client 7.2.2 MiniShop.Infrastructure
Serilog.AspNetCore 10.0.0 MiniShop.Web
Serilog.Sinks.File 7.0.0 MiniShop.Web

Tabulka je vygenerovaná ze souboru *.deps.json běžící aplikace – verze odpovídají nasazenému buildu.

Projekt MiniShop.AppHost (balíčky Aspire.Hosting.RabbitMQ, MessagePack) a testy se do Webu nenasazují, proto v tabulce nejsou – jsou popsané níže.

Platforma

Co K čemu Proč Odkazy
.NET 10 / C# běhové prostředí a jazyk LTS verze, multiplatformní (ARM i x86), výkon dotnet.microsoft.com
ASP.NET Core web: Razor Pages (UI), kontrolery (REST API), DI, konfigurace, health checky součást .NET, vše potřebné v jednom docs
Microsoft.AspNetCore.OpenApi dokument /openapi/v1.json (popis REST API, jen ve vývoji) standardní popis API pro nástroje a klienty docs
ASP.NET Core Identity (Microsoft.AspNetCore.Identity.EntityFrameworkCore) uživatelské účty: hash hesla, pravidla hesla, role, přihlašovací cookie; tabulky v users.db hotové a prověřené – vlastní kryptografie se nepíše; umí i zámek účtu, reset hesla a přihlášení přes Google docs
MailKit (+ System.Security.Cryptography.Pkcs připnutý na opravenou verzi) odesílání e-mailů přes SMTP – Gmail v produkci, Mailpit lokálně (E-maily) doporučená náhrada zastaralého SmtpClient, umí STARTTLS i přihlášení; Pkcs je jeho tranzitivní závislost s opravou GHSA-846f-f764-76mx GitHub
Microsoft.Extensions.Hosting.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Diagnostics.HealthChecks background služby (outbox worker, consumery), načtení nastavení, health checky Infrastructure není web projekt, potřebuje jen tyto části docs

Data a zprávy

Co K čemu Proč Odkazy
Entity Framework Core + Microsoft.EntityFrameworkCore.Sqlite ORM – entity ↔ tabulky, transakce, change tracker (outbox v SaveChanges); Microsoft.EntityFrameworkCore.Design + nástroj dotnet-ef (dotnet-tools.json) pro migrace všech databází standard v .NET; transakce přes data i outbox v jednom DbContext; migrace – produkční data se nesmí mazat (Sdílené jádro – migrace) docs
SQLite databáze v jednom souboru na modul žádný databázový server – ideální pro výuku a malou VM; online backup API sqlite.org
RabbitMQ.Client připojení k RabbitMQ: exchange, fronty, publisher confirms, consumery oficiální klient; vlastní tenká vrstva ukazuje, co dělají knihovny jako MassTransit docs

Služby a observabilita

Co K čemu Proč Odkazy
OpenTelemetry – OpenTelemetry.Extensions.Hosting, OpenTelemetry.Exporter.OpenTelemetryProtocol, OpenTelemetry.Instrumentation.AspNetCore, OpenTelemetry.Instrumentation.Http, OpenTelemetry.Instrumentation.Runtime, OpenTelemetry.Instrumentation.EntityFrameworkCore trasy, metriky a logy ve standardním formátu OTLP nezávislé na dodavateli – stejná data jde poslat do Aspire, Grafany i cloudu opentelemetry.io
Serilog (Serilog.AspNetCore, Serilog.Sinks.File) strukturované logy do konzole, souboru a OpenTelemetry konfigurace v appsettings, denní soubory, jeden řádek na HTTP požadavek serilog.net
Microsoft.Extensions.Http.Resilience opakování, timeout a circuit breaker pro HTTP klienta skladu postavené na Polly; výpadek skladu neshodí stránku docs
Microsoft.Extensions.ServiceDiscovery najde adresu služby podle jména inventory-api adresu dodá Aspire nebo Compose, kód se nemění docs
.NET Aspire (Aspire.AppHost.Sdk, Aspire.Hosting.RabbitMQ) lokální orchestrace: RabbitMQ, služby, dashboard jeden příkaz pro celé prostředí; viz Lokální vývoj docs
MessagePack tranzitivní závislost Aspire, připnutá na opravenou verzi bezpečnostní oprava (GHSA-qhrr-8q5h-9q3h) GitHub

Testy

Co K čemu Proč Odkazy
xUnit (xunit, xunit.runner.visualstudio) + Microsoft.NET.Test.Sdk testovací framework a jeho spouštění nejrozšířenější v .NET, jednoduchý xunit.net
Microsoft.AspNetCore.Mvc.Testing WebApplicationFactory – celý Web v paměti pro testy přes skutečné HTTP (matice oprávnění) ověří přihlášení, cookie, policies i antiforgery dohromady, bez spuštění serveru docs
NetArchTest.Rules testy architektury – hranice modulů a vrstev pravidla architektury hlídá CI, ne jen code review GitHub

Front-end a dokumentace

Co K čemu Proč Odkazy
Bootstrap 5 (5.3.3, jen CSS, lokálně ve wwwroot/lib/bootstrap) vzhled UI – mřížka, formuláře, tabulky hotový vzhled bez vlastního CSS; od účtů kroku 8 ne z CDN – CSP pouští jen vlastní soubory a cizí server nevidí návštěvníky getbootstrap.com
Markdig převod Markdownu této dokumentace na HTML (na serveru) nejrychlejší a nejúplnější Markdown pro .NET, tabulky i Mermaid bloky GitHub
Mermaid (lokální kopie ve wwwroot/lib/mermaid) diagramy z textu v prohlížeči diagram se píše jako text vedle dokumentace a mění se s ní v PR mermaid.js.org

Na internetu