Vergelijking van metrische API's
Wanneer u nieuwe metrische instrumentatie toevoegt aan een .NET-app of -bibliotheek, zijn er verschillende API's waaruit u kunt kiezen. Dit artikel helpt u inzicht te krijgen in de opties.
.NET-API 's
System.Diagnostics.Metrics
System.Diagnostics.Metrics-API's zijn de nieuwste platformoverschrijdende API's en zijn ontworpen in nauwe samenwerking met het OpenTelemetry-project . Als u geen specifieke reden hebt om een van de oudere API's te gebruiken die hieronder worden behandeld, is System.Diagnostics.Metrics een goede standaardoptie voor nieuw werk. Het is beschikbaar door .NET 6+ of in oudere .NET Core- en .NET Framework-apps te gebruiken door een verwijzing toe te voegen naar het .NET System.Diagnostics.DiagnosticsSource 6.0+ NuGet-pakket. Naast het streven naar brede compatibiliteit voegt deze API ondersteuning toe voor veel dingen die ontbreken uit eerdere API's, zoals:
- Histogrammen en percentielen
- Multidimensionale metrische gegevens
- Sterk getypte high-performance listener-API
- Meerdere gelijktijdige listeners
- Listener-toegang tot niet-samengevoegde metingen
Hoewel deze API is ontworpen om goed te werken met OpenTelemetry en het groeiende ecosysteem van pluggable leveranciersintegratiebibliotheken, hebben toepassingen ook de mogelijkheid om de ingebouwde listener-API's van .NET rechtstreeks te gebruiken. Met deze optie kunt u aangepaste metrische hulpprogramma's maken zonder externe bibliotheekafhankelijkheden te gebruiken.
PerformanceCounter
System.Diagnostics.PerformanceCounter API's zijn de oudste metrische .NET-API's. Ze worden alleen ondersteund in Windows en bieden een beheerde wrapper voor windows-prestatiemeteritems. Ze zijn beschikbaar in alle ondersteunde versies van .NET.
Deze API's zijn voornamelijk beschikbaar voor compatibiliteit; het .NET-team beschouwt dit als een stabiel gebied dat onwaarschijnlijk is verdere verbetering te ontvangen, afgezien van bugfixes. Deze API's worden niet voorgesteld voor nieuwe ontwikkelingsprojecten, tenzij het project alleen windows is en u de windows-hulpprogramma's voor prestatiemeteritems wilt gebruiken.
Zie Prestatiemeteritems in .NET Framework voor meer informatie.
EventCounters
EventCounters waren de eerste .NET-API's ter ondersteuning van een platformoverschrijdende metrische gegevens. De API's zijn beschikbaar op .NET Core 3.1+ en er is een kleine subset beschikbaar op .NET Framework 4.7.1 en hoger. Deze API's worden volledig ondersteund en nog steeds gebruikt door belangrijke .NET-bibliotheken, maar ze hebben minder functionaliteit dan de nieuwere System.Diagnostics.Metrics API's. EventCounters kunnen de snelheid van wijzigingen en gemiddelden rapporteren, maar bieden geen ondersteuning voor histogrammen en percentielen. Er is ook geen ondersteuning voor multidimensionale metrische gegevens. Aangepaste hulpprogramma's zijn mogelijk via de EventListener API, hoewel deze niet sterk is getypt, geeft alleen toegang tot de geaggregeerde waarden en heeft beperkingen wanneer u meer dan één listener tegelijk gebruikt. EventCounters worden rechtstreeks ondersteund door Visual Studio, Application Insights, dotnet-counters en dotnet-monitor. Raadpleeg voor ondersteuning van hulpprogramma's van derden de documentatie van de leverancier of het project om te zien of deze beschikbaar is.
Het .NET-team verwacht in de toekomst geen nieuwe investeringen te doen in deze API, maar net als bij PerformanceCounters
de API blijft de API ondersteund voor alle huidige en toekomstige gebruikers.
API's van derden
De meeste APM-leveranciers (Application Performance Monitoring), zoals AppDynamics, Application Insights, DataDog, DynaTrace en NewRelic, bevatten api's voor metrische gegevens als onderdeel van hun instrumentatiebibliotheken. Prometheus en AppMetrics zijn ook populaire .NET OSS-projecten. Raadpleeg de verschillende projectwebsites voor meer informatie over deze projecten.