Как измерить производительность API в ASP.NET Core

автор vadim


В современном быстро меняющемся цифровом мире давайте не будем обманывать себя по поводу того, насколько быстро мы движемся. Многие из нас и программное обеспечение, которое мы создаем, по-прежнему слишком медленное. Откуда нам знать, что мы вообще добиваемся прогресса?

Чтобы точно знать, что ситуация улучшается, нам сначала нужно ее измерить. Если вы считаете, что производительность ваших API имеет решающее значение для счастья ваших пользователей и успеха вашего приложения (а это так), вам следует регулярно отслеживать эту производительность и следить за тем, чтобы о любых проблемах сообщалось на ранних этапах цикла разработки программного обеспечения.

Отличным инструментом для измерения производительности API в .NET является MethodTimer.Fody. В этой статье мы рассмотрим, как можно использовать MethodTimer.Fody для измерения производительности API в приложениях ASP.NET Core.

Чтобы использовать примеры кода, представленные в этой статье, в вашей системе должна быть установлена ​​Visual Studio 2022. Если у вас еще нет копии, вы можете скачать Visual Studio 2022 здесь.

Создайте проект веб-API ASP.NET Core в Visual Studio.

Прежде всего давайте создадим проект веб-API ASP.NET Core 7 в Visual Studio 2022. Выполните действия, описанные ниже.

  1. Запустите интегрированную среду разработки Visual Studio 2022.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» выберите «ASP.NET Core Web API» из списка отображаемых шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и местоположение нового проекта.
  6. При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
  7. Нажмите “Далее.
  8. В следующем окне «Дополнительная информация» оставьте флажок «Использовать контроллеры (снимите флажок, чтобы использовать минимальные API)». В этом проекте мы не будем использовать минимальные API.
  9. В другом месте окна «Дополнительная информация» оставьте для параметра «Тип аутентификации» значение «Нет» (по умолчанию) и убедитесь, что флажки «Включить поддержку Open API», «Настроить для HTTPS» и «Включить Docker» остаются. не отмечено. Мы не будем здесь использовать ни одну из этих функций.
  10. Нажмите Создать.

Мы будем использовать этот проект веб-API ASP.NET Core для измерения производительности API с помощью MethodTimer.Fody в разделах ниже.

Что такое производительность API и почему это важно?

Производительность API — это термин, обозначающий, насколько быстро API может обрабатывать запросы и возвращать ответы. Этот показатель включает в себя такие факторы, как скорость обработки, эффективность вычислений, извлечение данных и предоставление результатов пользователям. Анализируя эти факторы и разбираясь в тонкостях производительности API, вы сможете принимать обоснованные решения при интеграции API в ваши бизнес-приложения.

Двумя ключевыми причинами поддержания хорошей производительности API являются удобство использования и масштабируемость. Быстрые и эффективные ответы API необходимы для обеспечения бесперебойного взаимодействия с пользователем. По мере увеличения количества пользовательских запросов к вашему приложению производительность API становится критически важной. Если вы не разработали свой API для эффективной обработки нагрузки, вы рискуете снизить производительность, увеличить время отклика и даже сбои системы.

Очевидно, что производительность API может напрямую повлиять на конкурентоспособность вашего бизнеса.

Установите NuGet-пакет MethodTimer.Fody.

Переходим к измерению производительности API с помощью MethodTimer.Fody. Сначала добавьте пакет NuGet MethodTimer.Fody в только что созданный проект веб-API. Для этого выберите проект в окне обозревателя решений, щелкните правой кнопкой мыши и выберите «Управление пакетами NuGet». В окне диспетчера пакетов NuGet найдите пакет MethodTimer.Fody и установите его.

Альтернативно вы можете установить пакет через консоль диспетчера пакетов NuGet, введя строку, показанную ниже.

PM> Install-Package MethodTimer.Fody

Помимо установки пакета MethodTimer.Fody вам потребуется добавить в проект файл конфигурации с именем FodyWeavers.xml. Создайте новый файл с именем FodyWeavers.xml в корневом каталоге проекта и введите в него следующий код.

<?xml version="1.0" encoding="utf-8"?>
<Weavers>
  <MethodTimer />
</Weavers>

Создание методов API в ASP.NET Core

Далее мы создадим несколько методов API, чтобы профилировать их производительность. Создайте новый класс сущности с именем Author и замените сгенерированный код следующим кодом.

public class Author
{
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
}

Теперь создайте новый контроллер API с именем AuthorController в файле с тем же именем и расширением .cs. Замените сгенерированный код следующим кодом.

using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace IDG.MethodTimer.Fody.Demo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class AuthorController : ControllerBase
    {
        private readonly List<Author> authors = new List<Author>();
        public AuthorController()
        {
            authors.Add(new Author()
            {
                Id = 1,
                FirstName = "Joydip",
                LastName = "Kanjilal"
            });
            authors.Add(new Author()
            {
                Id = 2,
                FirstName = "Paul",
                LastName = "Smith"
            });
        }
        [HttpGet]
        public IEnumerable<Author> Get()
        {
            return authors;
        }
        [HttpGet("{id}", Name = "Get")]
        public Author Get(int id)
        {
            return authors.Find(x => x.Id == id);
        }
    }
}

Примените [Time] атрибут вашим методам API

Чтобы измерить время выполнения методов API с помощью MethodTimer.Fody, мы должны применить [Time] отнести к этим методам. Так что примените [Time] атрибут вашим методам действий, как показано во фрагменте кода, приведенном ниже.

[Time]
[HttpGet]
public IEnumerable<Author> Get()
{
    return authors;
}

[Time]
[HttpGet("{id}", Name = "Get")]
public Author Get(int id)
{
    return authors.Find(x => x.Id == id);
}

Измерьте производительность ваших методов API

Когда вы запускаете приложение и просматриваете любую из двух конечных точек, имеющих [Time] Применив к ним атрибут, вы сможете увидеть время выполнения методов API, как показано на рисунке 1 ниже.

методтаймер 01 ИДГ

Рисунок 1: MethodTimer.Fody за работой!

Обратите внимание, что время выполнения показывает ноль миллисекунд. Это потому, что наша реализация контроллера минималистична: метод действия возвращает всего пару записей. Если вы хотите увидеть разницу, вы можете замедлить свой метод действия, используя метод Thread.Sleep, как показано в приведенном ниже фрагменте кода.

[Time]
[HttpGet]
public IEnumerable<Author> Get()
{
    Thread.Sleep(1000);
    return authors;
}

Когда вы снова запустите приложение и просматриваете ту же конечную точку, выходные данные должны выглядеть примерно так, как показано на рисунке 2.

методтаймер 02 ИДГ

Рис. 2. Метод действия HttpGet показывает время выполнения.

Хотя существует несколько инструментов для профилирования производительности приложений, вам следует выбрать тот, который соответствует вашим требованиям. Разработчики API должны сосредоточиться на оптимизации запросов к базе данных, реализации кэширования, оптимизации кода и минимизации ненужной передачи данных. Естественно, вам также следует регулярно следить за производительностью.

Дальше читайте это:

  • Лучшее программное обеспечение с открытым исходным кодом 2023 года
  • Сертификаты программирования все еще имеют значение?
  • Облачные вычисления больше не являются пустяком
  • Что такое генеративный ИИ? Искусственный интеллект, который создает
  • Программирование с помощью ИИ: советы и лучшие практики от разработчиков
  • Почему Wasm — это будущее облачных вычислений

Related Posts

Оставить комментарий