Рубрики
Uncategorized

Игра с функциями Azure: Mission 3

Привет чемпионов! Добро пожаловать обратно в мою серию функций Azure. Во-первых, если вы здесь со мной, я должен отпраздновать … Теги с dotnet, Azure, VSCode, Devops.

Серия функций Dotnet Azure (3 части серии)

Привет чемпионов! Добро пожаловать обратно в мою серию функций Azure. Во-первых, если вы здесь со мной, я должен отпраздновать вас 👏🏻, как вы были успешно выполнены предыдущие миссии. Если это не так, пожалуйста, обязательно проверьте два других сообщения. Даже если это не обязательно оформить заказ, Я сильно Предложите вам сделать, потому что в этой последней миссии мы собираемся взять нашу функцию Azure, построенные в предыдущих миссиях и внесите некоторые изменения на его вершину. Более того, этот пост предположил, что у вас есть Основные знания о теме (не волнуйтесь, вы можете получить его, читая предыдущие посты, и вы узнаете основные концепции с небольшим количеством забавных 😂). Сегодня мы собираемся поговорить о Обновление Наша функция Azure от .NET Ядро 3.1 до желаемого .NET 5.0. Итак, оставайся настроенными! ЗАМЕТКА: Если вы попадаете в беду после учебного пособия, вы можете найти весь код в папке «End» моего репо GitHub, которую вы можете найти здесь Отказ

Наши предыдущие достижения 🥳

Если вы завершили миссию 1 и 2, у вас сейчас есть рабочее решение со следующими функциями:

  • Proj под названием «Azure-Function-объекты», которые удерживают модели для нашего приложения. Он имеет класс под названием «Optual.cs», составленный реквизитом, который зарегистрирован нашей функцией Azure. Его целевая структура составляет .NET Стандарт 2.1.
  • Proj называемый «менеджерами Azure-Functioners», отвечающих за проведение Услуги для нашего приложения. Он имеет только сервис под названием «ПриветственноеСервис» с его интерфейсом «IgreetingsService». Его целевая структура составляет .NET Стандарт 2.1.
  • Proj под названием «Azure-Function» с нашими Тергерный таймер Функция Azure, которая на каждом секунде делится на 5, будет регистрировать сообщения на нашу консоль. Он использовал модели и услуги, предоставляемые выше, перечисленные выше. Его целевая структура составляет .NET Core 3.1 (ЛТС).

Давайте начать 👨🏻🚀👩🏻🚀

Окончательная миссия

Будьте готовы ⚔! Наше путешествие собирается закончить, но эта миссия будет самые тяжелые Отказ Через эту миссию мы собираемся обновить наш .NET Core 3.1 Функция Azure, которая была разработана с в процессе Модель программирования в функцию Net 5.0 Azure, которая будет работать в Изолированный рабочий процесс . Эта миграция разделена на три второстепенных миграции: один для каждого профила в нашем решении. Теперь пришло время перестать говорить и начать развивать 💻.

Первоначальная настройка 👷🏻♂. ️

.СЕТЬ 5 SDK.

Во-первых, обязательно быть уверенным, что наша среда разработки может поддерживать ProJS, ориентированные на рамки Net 5.0. Если вы еще не разработали приложение Net 5.0, вероятно, вы должны загрузить связанную SDK. Ты можешь скачать его из здесь Отказ После того, как вы успешно установили его, вы можете попробовать выдать эту команду в оболочке:

dotnet --version

Если номер у вас получил, начинается с 5, вы хотите пойти.

Переименование фазы

📖Int📖 : IMO Вы должны выполнять эти шаги с VSCode Closed и откройте его позже. Поскольку мы собираемся сохранить предыдущую рабочую функцию, мы выбираем дублирую папку «Пуск» и сделать миграцию на эту вновь созданную папку. Итак, скопируйте-вставьте папку «Пуск» и переименуйте его на «End». Использование терминала Перейдите в папку «End», и вы найдете файл, называемый «start.sln». Переименуйте его на «end.sln», чтобы соответствовать имени родительского каталога. ⚠️warning⚠️ : Также проверьте «end.sln», чтобы быть уверены, что в нем осталось более Refs, указывающих на «Пуск». Если это не так, обязательно адаптируйте их в соответствии с новой структурой файловой системы. Теперь выпустите эту команду, чтобы открыть VSCode:

code . -r

Azure-функциональные объекты Proj

Откройте файл «Azure-Function-Itents.csproj» и измените целевую структуру, как показано ниже:

net5.0

После этого перейдите в папку «Модели» и откройте файл класса «Optwork.cs». Измените фактическую реализацию со следующим кодом:

namespace azure_function_entities.models
{
    public record Output(string Message, string ApiKey);
}

🔎note🔎 : Это новый языковой синтаксис, представленный C # 9.0. Это называется Запись и вы можете узнать больше о них здесь Отказ Составьте этот проект в сингулярно быть уверенным, что он все еще работает, как ожидалось.

Azure-Function-менеджеры PROJ

Откройте файл «Azure-Function-Managers.csproj» и измените целевую структуру, как показано ниже:

net5.0

Составьте этот проект в сингулярно быть уверенным, что он все еще работает, как ожидалось.

Azure-Function Proj

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

«Azure-Function.csproj»

Во-первых, отредактируйте целевую структуру, как показано ниже:

net5.0

🔴Впреобразить🔴 : Право ниже этого параметра добавьте этот, который является обязательным для успешного выполнения миграции:

Exe

Последнее изменение состоит в том, чтобы обновить раздел о пакете Nuget: замените свой раздел этим:

  
    
    
    
    
  

Когда вы сохраняете, VS код предложит вам восстановить зависимости файла CSPROJ, подтвердить и дождаться операции для завершения. 🔎note🔎 : После того, как операция завершила куча сообщений об ошибках, и предупреждение начнется предупреждение. Не волнуйтесь, мы исправим их через минуту 🐱👤.

«local.settings.json»

Чтобы изменить функцию Azure Host из «In-Process» на «Изолированные», нам нужно обновить настройку «Function_Worker_runtime», как следует следующим образом:

"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"

Вы можете узнать больше о изолированном процессе для функции Azure здесь Отказ

«Startup.cs» ❌

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

«Program.cs» 🗼

Это место, где мы можем выполнять всю необходимую настройку нашей функции Azure. Конечно, мы создадим этот файл в нашем ProJ. 🕵 🏻♂️note🕵🏻♂️. : В нашем случае этот файл отсутствует, потому что мы обновляем со старой версии функции Azure. Если вы запустите проект Net 5.0 с нуля, этот файл будет включен в автоматические файлы. Добавьте файл с именем «Program.cs» в PROJ «Azure-Fuction» и вставьте следующий код:

using azure_function_managers.services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Reflection;

namespace azure_function
{
    public class Program
    {
        public static void Main()
        {
            var host = new HostBuilder()
            .ConfigureFunctionsWorkerDefaults()
            .ConfigureAppConfiguration(options => options.AddUserSecrets(assembly: Assembly.GetExecutingAssembly(), optional: true, reloadOnChange: true))
            .ConfigureServices(services => services.AddScoped())
            .Build();

            host.Run();
        }
    }
}

⚠️warning⚠️ : Всегда дважды проверьте пространства имен, так как их являются одним из основных источников ошибок в этой операции копирования-вставки. Цель этого кода — Настроить , построить и Беги Рабочий процесс для нашей функции Azure. Больше в глубине ты видишь, что:

  • Host Builder настроен с настройками по умолчанию
  • Секреты пользователей добавляются в качестве поставщиков конфигурации для нашего хоста
  • Сервис «Приветствия» добавляется в встроенный контейнер с помощью Срок службы Scoped Наконец, хост построен и запущен.

«Timertriggerfunc.cs»

Этот файл — это то, где определяется метод запуска. Здесь вы можете увидеть Привязки ввода/вывода функции, триггер это стреляет в это и Код выполнить. Есть три основных изменения, чтобы сделать для того, чтобы сделать работу (я объясню немного):

using System;
using azure_function_entities.models;
using azure_function_managers.services;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace azure_function
{
    public class TimerTriggerFunc
    {
        private readonly IGreetingsService _greetingsService;
        private readonly IConfiguration _configuration;

        public TimerTriggerFunc(IGreetingsService greetingsService, IConfiguration configuration)
        {
            _greetingsService = greetingsService;
            _configuration = configuration;
        }

        [Function("TimerTriggerFunc")]
        public void Run([TimerTrigger("%TimerCron%")] TimerInfo myTimer, FunctionContext context)
        {
            var logger = context.GetLogger();
            logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
            Output output = new(_greetingsService.SayHello("ivan"), _configuration.GetValue("ApiKey"));
            logger.LogInformation($"Message: {output.Message}");
            logger.LogInformation($"ApiKey: {output.ApiKey}");
        }

        public class TimerInfo
        {
            public ScheduleStatus ScheduleStatus { get; set; }
            public bool IsPastDue { get; set; }
        }

        public class ScheduleStatus
        {
            public DateTime Last { get; set; }
            public DateTime Next { get; set; }
            public DateTime LastUpdated { get; set; }
        }
    }
}

Первое, что нужно заметить, это новый Использование заявлений в верхней части файла. Самое главное — используя Microsoft. Лазури. Функции. Работник; Это позволяет нам использовать «изолированные» функции процесса. Второе новая подпись метода запуска: вместо iLogger теперь функция ожидает, что тип функции функции, представляющий контекст выполнения нашей функции. От нее мы можем получить регистратор для использования в нашем методе вместо того, чтобы приведен «в процессе» модели и .NET Core 3.1. 🔎note🔎 : В третьей строке корпуса метода прогона мы использовали две новые функции C # 9.0 : Запись Типы (ссылка выше) и Нацеленный напечатанный новый выражение (больше на нем здесь ). Последнее, но не в последнюю очередь, что мы должны определить типы TimerInfo и планируемых типов, которые сейчас больше не предоставляются пакетом Microsoft. Лазури. Webjobs Отказ 🔵Впреобразить🔵 : Всегда лучшая практика для определения типов в своих собственных классов файлов, но ради простоты я помещаю определение типов внутри файла «TimertriggerFUNCCS».

Доброе напоминание до боя ⚔

Если вы не запустили эмулятор хранения Azure, всплывающее окно появится следующее:

Перейдите в меню «Пуск» и введите «Azure Storage Emulator» и откройте программу. В командной строке вы должны увидеть подтверждение «Эмулятор хранения был успешно запущен».

Победа или поражение? 🏁.

Теперь момент правды … Нажмите F5 и проверьте, работает ли ваша функция Azure.

Функция все еще работает, даже если она обновлена до новых функций.

Последние мысли 💭

Я думаю, что это важные достижения для нас. Microsoft будет следовать этому направлению, поэтому в определенный момент времени вовремя будет обязательным для соответствия модели программирования «Изолированного процесса». Просто для Ref я поделюсь к вам изображение, которое показывает дорожную карту функции Azure:

Это изображение является самосвязкой: рано или поздно вы будете о миграции своей старомодной функции Azure на свежий способ делать вещи.

Outro + Привет 👋🏻

Намерение этого поста состоит в том, чтобы сделать вашу жизнь проще в этом процессе миграции, что вы можете столкнуться с вашей жизнью развития. Поздравляем о достижении этого последнего шага и достичь его. Было приятно бороться с тобой. Я надеюсь, что вы найдете эту серию полезным и забавным. Я сделал все возможное, чтобы сделать этот контент максимально ценным.

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

Оставайся в безопасности и увидимся скоро! 😎

Серия функций Dotnet Azure (3 части серии)

Оригинал: «https://dev.to/ivan_pesenti/playing-with-azure-functions-mission-3-naa»