Confronto delle API delle metriche
Quando si aggiunge una nuova strumentazione relativa alla metrica a un'app o a una libreria .NET, sono disponibili diverse API tra cui scegliere. Questo articolo consente di capire quali sono le opzioni disponibili.
API .NET
System.Diagnostics.Metrics
Le API System.Diagnostics.Metrics sono le API multipiattaforma più recenti e sono state progettate in stretta collaborazione con il progetto OpenTelemetry. Se non si ha un motivo specifico per usare una delle API precedenti descritte di seguito, System.Diagnostics.Metrics rappresenta una scelta predefinita ottimale per il nuovo lavoro. È disponibile specificando come destinazione .NET 6+o nelle app .NET Core e .NET Framework precedenti aggiungendo un riferimento al pacchetto NuGet .NET System.Diagnostics.DiagnosticsSource 6.0+. Oltre a puntare a una compatibilità generale, questa API aggiunge il supporto per molti aspetti mancanti dalle API precedenti, ad esempio:
- Istogrammi e percentili
- Metriche multidimensionali
- API listener ad alte prestazioni fortemente tipizzata
- Più listener simultanei
- Accesso del listener alle misurazioni non aggregate
Anche se questa API è stata progettata per funzionare bene con OpenTelemetry e il suo crescente ecosistema di librerie di integrazione fornitore pluggable, le applicazioni presentano anche la possibilità di usare direttamente le API listener predefinito .NET. Con questa opzione, è possibile creare strumenti di metrica personalizzati senza dipendenze relativamente ad alcuna libreria esterna.
PerformanceCounter
Le API System.Diagnostics.PerformanceCountersono le API metriche .NET meno recenti. Sono supportate solo in Windows e forniscono un wrapper gestito per la tecnologia Contatore delle prestazioni del sistema operativo Windows. Sono disponibili in tutte le versioni supportate di .NET.
Queste API vengono fornite principalmente per la compatibilità; il team .NET considera questa area stabile e probabilmente non riceverà ulteriori miglioramenti oltre alle correzioni di bug. Queste API non sono consigliate per i nuovi progetti di sviluppo, a meno che il progetto non sia relativo solo a Windows e che si desideri usare gli strumenti Contatore delle prestazioni di Windows.
Per altre informazioni, vedere Contatori delle prestazioni in .NET Framework.
EventCounters
EventCounters è stata la prima API .NET a supportare un'esperienza di metrica multipiattaforma. Le API sono disponibili specificando come destinazione .NET Core 3.1+, mentre un piccolo subset è disponibile in .NET Framework 4.7.1 e versioni successive. Queste API sono completamente supportate e continuano a essere usate dalle principali librerie .NET, ma hanno meno funzionalità rispetto alle API più recenti System.Diagnostics.Metrics. Le API EventCounters sono in grado di segnalare le frequenze di modifica e le medie, ma non supportano istogrammi e percentili. Non è inoltre disponibile alcun supporto per le metriche multidimensionali. Gli strumenti personalizzati sono possibili tramite l'API EventListener, anche se non è fortemente tipizzata, concede l'accesso solo ai valori aggregati e presenta limitazioni quando si usano più listener contemporaneamente. Le API EventCounters sono supportate direttamente da Visual Studio, Application Insights, dotnet-counters e dotnet-monitor. Per il supporto di strumenti di terze parti, consultare la documentazione del fornitore o del progetto per verificare la disponibilità.
Il team .NET non prevede di effettuare nuovi investimenti su questa API in futuro, ma, come con PerformanceCounters
, l'API rimane supportata per tutti gli utenti attuali e futuri.
API di terze parti
La maggior parte dei fornitori di Application Performance Monitoring (APM), ad esempio AppDynamics, Application Insights, DataDog, DynaTrace e NewRelic, includono le API delle metriche come parte delle librerie di strumentazione. Prometheus e AppMetrics sono inoltre progetti .NET OSS popolari. Per altre informazioni su questi progetti, consultare i vari siti Web dei progetti.