Использование TrackDependency - это правильный способ получить метрики уровня бизнес-логики c. NET Библиотечный класс? - PullRequest
0 голосов
/ 20 апреля 2020

Я применил Application Insights в проекте MVC. NET. Решение имеет 3 проекта: проект MVC для внешнего интерфейса и 2. NET проекта класса библиотеки, один для бизнес-уровня и другой для уровня доступа к данным.

По умолчанию Application Insights автоматически отслеживает HTTP-запросы и вызов SQL, а уровень бизнес-логики c пропускается.

Я пытался использовать TrackDependency для получения метрик из промежуточного библиотечного класса, который имеет все бизнес-логики c приложения, и, похоже, оно работает.

Я реализовал следующий код в контроллере, только когда он использует метод бизнес-уровня:

        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);
        }

My вопрос в том, что использование TrackDependency - это правильный способ получить метрики для промежуточного класса библиотеки, в котором есть все бизнес-логики c приложения ??? или есть другой способ ??

1 Ответ

1 голос
/ 21 апреля 2020

Да, метод TrackDependency должен быть самым простым способом сделать это.

Другое решение немного сложнее, вы должны использовать методы в Application Insights API для пользовательских событий и метрик .

Надеюсь, это поможет.

...