DevGang
Авторизоваться

Разработка асинхронных Serverless функций с помощью функций ASP.NET Core Azure

Привет, читатели блога dev-gang! 

Функции Azure позволяют запускать serverless код, управляемый событиями, без управления инфраструктурой. Функции могут запускаться HTTP-запросами, расписаниями, изменениями базы данных, загрузкой файлов и т. д.

ASP.NET Core предоставляет упрощенный способ создания функций Azure с использованием C# и .NET. В этом посте мы рассмотрим, как разрабатывать асинхронные функции Azure с помощью ASP.NET Core.

Преимущества serverless функций

Некоторые ключевые преимущества использования serverless функций:

  • Нет инфраструктуры для управления — Azure занимается предоставлением ресурсов и масштабированием.
  • Плата за выполнение — потребляйте только те ресурсы, которые вам нужны.
  • Масштабирование на основе событий — функции плавно масштабируются в зависимости от спроса.
  • Ускоренная разработка. Нет необходимости управлять потоками, соединениями и т. д.

Создание основной функции Azure ASP.NET

Давайте рассмотрим создание базовой функции, запускаемой HTTP, с использованием шаблона функции Azure в Visual Studio.

  • Создайте новый проект Функций Azure.
  • Выберите шаблон триггера HTTP
  • Изменить метод запуска:
public static async Task<IActionResult> Run(HttpRequest req)
{
  return new OkObjectResult("Hello World!"); 
}

Это вернет «Hello World!» при доступе к URL-адресу функции.

Создание асинхронных функций

Чтобы сделать нашу функцию асинхронной, мы можем использовать ключевые слова async и await:

public static async Task<IActionResult> Run(HttpRequest req)  
{
  await Task.Delay(1000);
  return new OkObjectResult("Hello World!");
}

Это задерживает ответ на 1 секунду для имитации задержки.

Сигнатура метода Run возвращает задачу, позволяя выполнять ее асинхронно.

Доступ к запросу и ответу

Мы можем получить доступ к подробной информации о HTTP-запросе через параметр HttpRequest:

var name = req.Query["name"];

return new OkObjectResult($"Hello {name}!");

При этом считывается параметр запроса имени и персонализируется ответ.

Мы также можем создать HTTP-ответ, вернув IActionResult или установив HttpResponse.

Триггеры функций и привязки

Функции могут запускаться таймерами, очередями, другими службами Azure и т. д. Мы можем получить доступ к полезной нагрузке триггера через привязку параметров:

public static async Task Run(
  [QueueTrigger("messagequeue")] string message, 
  ILogger log)
{
  log.LogInformation(message);
}

Эта функция, активируемая очередью, обрабатывает сообщения очереди.

Привязки ввода и вывода упрощают доступ к сервисам, таким как хранилище BLOB-объектов, из функции.

Внедрение зависимости

ASP.NET Core Dependency Injection позволяет внедрять сервисы в функции:

public class MyFunction 
{
  private readonly ILogger<MyFunction> logger;

  public MyFunction(ILogger<MyFunction> logger)
  {
    this.logger = logger;
  }

  public async Task Run(...) {
    logger.LogInformation("Function processed request");
  }
}

Функциональный класс теперь может получить доступ к службе регистрации через DI.

  • ASP.NET Core отлично подходит для написания функций Azure с помощью .NET.
  • Поддержка async/await обеспечивает эффективный асинхронный код.
  • Триггеры и привязки упрощают подключение к другим сервисам.
  • Встроенные функции, такие как DI, обеспечивают слабосвязанные функции. С помощью функций Azure и ASP.NET Core вы можете быстро создавать масштабируемые приложения, управляемые событиями, без управления серверами. Узнайте подробнее об общих архитектурах ASP.NET Core.
#ASP.NET
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу