Ölçüm API'leri karşılaştırması
.NET uygulamasına veya kitaplığına yeni ölçüm izlemesi eklerken, aralarından seçim yapabileceğiniz farklı API'ler vardır. Bu makale, seçenekleri anlamanıza yardımcı olacaktır.
.NET API'ları
System.Diagnostics.Metrics
System.Diagnostics.Metrics API'leri en yeni platformlar arası API'lerdir ve OpenTelemetry projesiyle yakın işbirliği içinde tasarlanmıştır. Aşağıda ele alınan eski API'lerden birini kullanmak için belirli bir nedeniniz yoksa, System.Diagnostics.Metrics yeni çalışma için iyi bir varsayılan seçenektir. .NET System.Diagnostics.DiagnosticsSource 6.0+ NuGet paketine başvuru ekleyerek .NET 6+ hedeflenerek veya eski .NET Core ve .NET Framework uygulamalarında kullanılabilir. Bu API, geniş uyumluluğu hedeflemeye ek olarak, önceki API'lerden eksik olan birçok şey için de destek ekler, örneğin:
- Histogramlar ve yüzdebirlik dilimler
- Çok boyutlu ölçümler
- Kesin türü belirlenmiş yüksek performanslı dinleyici API'si
- Birden çok eşzamanlı dinleyici
- Toplanmamış ölçümlere dinleyici erişimi
Bu API OpenTelemetry ve giderek büyüyen takılabilir satıcı tümleştirme kitaplıkları ekosistemiyle iyi çalışacak şekilde tasarlanmış olsa da, uygulamaların .NET yerleşik dinleyici API'lerini doğrudan kullanma seçeneği de vardır. Bu seçenekle, dış kitaplık bağımlılıkları almadan özel ölçüm araçları oluşturabilirsiniz.
PerformanceCounter
System.Diagnostics.PerformanceCounter API'ler en eski .NET ölçüm API'leridir. Bunlar yalnızca Windows'ta desteklenir ve Windows işletim sistemi Performans Sayacı teknolojisi için yönetilen bir sarmalayıcı sağlar. Bunlar desteklenen tüm .NET sürümlerinde kullanılabilir.
Bu API'ler öncelikle uyumluluk için sağlanır; .NET ekibi, bu alanı hata düzeltmelerinin yanı sıra daha fazla geliştirme alma olasılığı düşük olan kararlı bir alan olarak değerlendirmektedir. Bu API'ler, proje yalnızca Windows değilse ve Windows Performans Sayacı araçlarını kullanmak istemiyorsanız yeni geliştirme projeleri için önerilmez.
Daha fazla bilgi için bkz . .NET Framework'te performans sayaçları.
EventCounters
EventCounters, platformlar arası ölçüm deneyimini destekleyen ilk .NET API'leridir. API'ler .NET Core 3.1+ hedeflenerek kullanılabilir ve .NET Framework 4.7.1 ve sonraki sürümlerde küçük bir alt küme kullanılabilir. Bu API'ler tam olarak desteklenir ve anahtar .NET kitaplıkları tarafından hala kullanılır, ancak daha System.Diagnostics.Metrics yeni API'lerden daha az işlevselliğe sahiptir. EventCounter'lar değişiklik ve ortalama oranlarını bildirebilir, ancak histogramları ve yüzdebirlik değerleri desteklemez. Çok boyutlu ölçümler için de destek yoktur. Özel araçlar API aracılığıyla EventListener mümkündür, ancak kesin olarak yazılmaz, yalnızca toplanan değerlere erişim verir ve aynı anda birden fazla dinleyici kullanırken sınırlamalar vardır. EventCounters doğrudan Visual Studio, Application Insights, dotnet-counters ve dotnet-monitor tarafından desteklenir. Üçüncü taraf araç desteği için, kullanılabilir olup olmadığını görmek için satıcı veya proje belgelerine bakın.
.NET ekibi bundan sonra bu API'ye yeni yatırımlar yapmayı beklemez, ancak sürümünde olduğu gibi PerformanceCounters
API de mevcut ve gelecekteki tüm kullanıcılar için desteklenmeye devam eder.
Üçüncü taraf API'leri
AppDynamics, Application Insights, DataDog, DynaTrace ve NewRelic gibi uygulama performansı izleme (APM) satıcılarının çoğu ölçüm API'lerini izleme kitaplıklarının bir parçası olarak içerir. Prometheus ve AppMetrics de popüler .NET OSS projeleridir. Bu projeler hakkında daha fazla bilgi edinmek için çeşitli proje web sitelerini denetleyin.