使用 TrackDependency 是获取业务逻辑层 .NET 库指标的正确方法 Class?

Using TrackDependency is the right way to get metrics of a business logic layer .NET Library Class?

我在 MVC .NET 项目中应用了 Application Insights。该解决方案有 3 个项目:用于前端的 MVC 项目和 2 个 .NET 库 Class 项目,一个用于业务层,另一个用于数据访问层。

默认情况下,Application Insights 会自动跟踪 HTTP 请求和 SQL 调用,并跳过业务逻辑层。

我尝试使用 TrackDependency 从具有应用程序所有业务逻辑的中间库 Class 获取指标,它似乎有效。

我做的是在Controller中实现了如下代码,就在它消费业务层方法的时候:

        LogicLayer.LogicLayer logObj = new LogicLayer.LogicLayer();

        TelemetryClient telemetry = new TelemetryClient();

        string stResponse = "";
        var success = false;
        var startTime = DateTime.UtcNow;
        var timer = System.Diagnostics.Stopwatch.StartNew();
        try
        {
            stResponse = logObj.getData();
            success = true;
        }
        catch (Exception ex)
        {
            success = false;
            telemetry.TrackException(ex);
            throw new Exception("Operation went wrong", ex);
        }
        finally
        {
            timer.Stop();
            telemetry.TrackDependency("DependencyType", "myDependency", "myCall", "", startTime, timer.Elapsed, "", success);
        }

我的问题是:使用 TrackDependency 是在具有应用程序所有业务逻辑的中间库 Class 上获取指标的正确方法???或者还有其他方法吗??

是的,TrackDependency 方法应该是最简单的方法。

另一个解决方案有点复杂,你应该使用Application Insights API for custom events and metrics中的方法。

希望对您有所帮助。