IceRpc.Metrics
0.6.1
Prefix Reserved
dotnet add package IceRpc.Metrics --version 0.6.1
NuGet\Install-Package IceRpc.Metrics -Version 0.6.1
<PackageReference Include="IceRpc.Metrics" Version="0.6.1" />
<PackageVersion Include="IceRpc.Metrics" Version="0.6.1" />
<PackageReference Include="IceRpc.Metrics" />
paket add IceRpc.Metrics --version 0.6.1
#r "nuget: IceRpc.Metrics, 0.6.1"
#:package IceRpc.Metrics@0.6.1
#addin nuget:?package=IceRpc.Metrics&version=0.6.1
#tool nuget:?package=IceRpc.Metrics&version=0.6.1
Metrics interceptor and middleware for IceRPC
IceRpc.Metrics provides an IceRPC interceptor and an IceRPC middleware.
The metrics interceptor instruments invocations using the Meter API, while the metrics middleware instruments dispatches using the same API.
You can display the collected measurements with dotnet-counters and other tools.
Source code | Package | Example | API reference | Interceptor documentation | Middleware documentation
Sample code
// Client application
using IceRpc;
using System.Security.Cryptography.X509Certificates;
// Load the test root CA certificate in order to connect to the server that uses a test
// server certificate.
using var rootCA = X509CertificateLoader.LoadCertificateFromFile("certs/cacert.der");
await using var connection = new ClientConnection(
new Uri("icerpc://localhost"),
// examples/common/Program.Authentication.cs in the icerpc-csharp repo provides the
// CreateClientAuthenticationOptions helper method
clientAuthenticationOptions: CreateClientAuthenticationOptions(rootCA));
// Create an invocation pipeline and install the metrics interceptor.
Pipeline pipeline = new Pipeline().UseMetrics().Into(connection);
// Server application
using IceRpc;
// Create a router (dispatch pipeline) and install the metrics middleware.
Router router = new Router().UseMetrics().Map(...);
Sample code with DI
This sample stays focused on the metrics registration. For a complete Generic Host setup with certificates and configuration, see the GenericHost example.
// Client application
using IceRpc;
using IceRpc.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
HostApplicationBuilder hostBuilder = Host.CreateApplicationBuilder(args);
hostBuilder.Services
.AddIceRpcClientConnection(new Uri("icerpc://localhost"))
.AddIceRpcInvoker(builder =>
builder
// Add the metrics interceptor to the invocation pipeline.
.UseMetrics()
.Into<ClientConnection>());
using IHost host = hostBuilder.Build();
host.Run();
// Server application
using IceRpc;
using IceRpc.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
HostApplicationBuilder hostBuilder = Host.CreateApplicationBuilder(args);
hostBuilder.Services
.AddIceRpcServer(builder =>
builder
// Add the metrics middleware to the dispatch pipeline.
.UseMetrics()
.Map<...>());
using IHost host = hostBuilder.Build();
host.Run();
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- dunet (>= 1.16.2)
- IceRpc (= 0.6.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.6.1 | 154 | 9/17/2026 |
| 0.6.0 | 185 | 6/5/2026 |
| 0.5.2 | 139 | 5/18/2026 |
| 0.5.1 | 227 | 1/7/2026 |
| 0.5.0 | 773 | 12/1/2025 |
| 0.4.1 | 319 | 11/15/2024 |
| 0.4.0.1 | 320 | 9/17/2024 |
| 0.4.0 | 257 | 9/16/2024 |
| 0.3.1 | 291 | 3/28/2024 |
| 0.3.0 | 356 | 2/14/2024 |
| 0.2.1 | 340 | 12/12/2023 |
| 0.2.0 | 213 | 12/4/2023 |
| 0.1.2 | 236 | 10/9/2023 |
| 0.1.1 | 238 | 9/18/2023 |
| 0.1.0 | 294 | 9/6/2023 |