服务模型性能计数器实例名称

本文关键字:实例 性能计数器 模型 服务 | 更新日期: 2023-09-27 18:37:11

我正在尝试直接连接到ServiceModel发出的性能计数器(用于服务,端点和操作)。问题是,当我尝试与某个服务(或端点/操作)相关联时,我需要指定计数器的实例名称。

根据 MSDN 实例名称简单的模式,但是,在某些情况下,当实例名称的某个组件(URI、合约名称等)太长时,它会缩短,并在字符串的开头或结尾添加哈希代码。本文没有具体说明如何对其进行哈希处理。

所以我的问题有没有办法根据服务名称及其地址获取 ServiceModel 实例名称

服务模型性能计数器实例名称

我知道

这并不理想,但是您可以将当前用于生成计数器实例名称的.NET实现复制到您自己的代码/应用程序中,以编程方式从完整的服务名称和地址生成相同的名称。

您可以在此处查看 WCF 使用的代码:

对于服务性能计数器:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/ServicePerformanceCountersBase.cs,6d61d34585241697

对于终结点性能计数器:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/EndpointPerformanceCountersBase.cs,e3319d41297320e3

对于操作性能计数器:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/OperationPerformanceCountersBase.cs,5e170817afd5d0ba

缺点是,对用于命名实例的 .NET 算法的任何更改都会破坏您的实现。

我和你一样沮丧,但没有找到更好的解决方案。