Dela via


Jämförelse av mått-API:er

När du lägger till ny måttinstrumentation i en .NET-app eller ett bibliotek finns det olika API:er att välja mellan. Den här artikeln hjälper dig att förstå alternativen.

.NET-API:er

System.Diagnostics.Metrics

API:er för System.Diagnostics.Metrics är de nyaste plattformsoberoende API:erna och utformades i nära samarbete med OpenTelemetry-projektet . Om du inte har någon specifik anledning att använda något av de äldre API:erna som beskrivs nedan är System.Diagnostics.Metrics ett bra standardval för nytt arbete. Den är tillgänglig genom att rikta in sig på .NET 6+, eller i äldre .NET Core- och .NET Framework-appar genom att lägga till en referens till .NET System.Diagnostics.DiagnosticsSource 6.0+ NuGet-paketet. Förutom att sträva efter bred kompatibilitet lägger det här API:et till stöd för många saker som saknades från tidigare API:er, till exempel:

  • Histogram och percentiler
  • Flerdimensionella mått
  • Starkt skrivet lyssnar-API med höga prestanda
  • Flera samtidiga lyssnare
  • Lyssnaråtkomst till oaggregerade mått

Även om det här API:et har utformats för att fungera bra med OpenTelemetry och dess växande ekosystem av anslutningsbara leverantörsintegreringsbibliotek, har program också möjlighet att använda .NET-inbyggda lyssnar-API:er direkt. Med det här alternativet kan du skapa anpassade måttverktyg utan att ta några externa biblioteksberoenden.

PerformanceCounter

System.Diagnostics.PerformanceCounter API:er är de äldsta .NET-mått-API:erna. De stöds bara i Windows och tillhandahåller en hanterad omslutning för Windows OS Performance Counter-teknik . De är tillgängliga i alla versioner av .NET som stöds.

Dessa API:er tillhandahålls främst för kompatibilitet. .NET-teamet anser att detta är ett stabilt område som sannolikt inte kommer att få ytterligare förbättringar förutom buggkorrigeringar. Dessa API:er föreslås inte för nya utvecklingsprojekt om inte projektet endast är Windows och du vill använda Verktyg för Prestandaräknare i Windows.

Mer information finns i Prestandaräknare i .NET Framework.

EventCounters

EventCounters var de första .NET-API:erna som stödde en plattformsoberoende måttupplevelse. API:erna är tillgängliga genom att rikta in sig på .NET Core 3.1+, och en liten delmängd är tillgänglig på .NET Framework 4.7.1 och senare. Dessa API:er stöds fullt ut och används fortfarande av viktiga .NET-bibliotek, men de har mindre funktioner än de nyare System.Diagnostics.Metrics API:erna. EventCounters kan rapportera ändringsfrekvenser och medelvärden, men stöder inte histogram och percentiler. Det finns inte heller något stöd för flerdimensionella mått. Anpassade verktyg är möjliga via API:et EventListener , även om det inte är starkt skrivet, ger bara åtkomst till de aggregerade värdena och har begränsningar när du använder mer än en lyssnare samtidigt. EventCounters stöds direkt av Visual Studio, Application Insights, dotnet-counters och dotnet-monitor. Information om stöd för verktyg från tredje part finns i leverantören eller projektdokumentationen för att se om den är tillgänglig.

.NET-teamet förväntar sig inte att göra nya investeringar i det här API:et framöver, men precis som med PerformanceCountersfortsätter API:et att stödjas för alla nuvarande och framtida användare.

API:er från tredje part

De flesta leverantörer av övervakning av programprestanda (APM) som AppDynamics, Application Insights, DataDog, DynaTrace och NewRelic innehåller mått-API:er som en del av deras instrumentationsbibliotek. Prometheus och AppMetrics är också populära .NET OSS-projekt. Mer information om dessa projekt finns på de olika projektwebbplatserna.