Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать Visual Studio для развертывания проекта консольного приложения в веб-приложении в службе приложений Azure в качестве веб-задания Azure. Сведения о развертывании веб-заданий с помощью портала Azure см. в статье Выполнение фоновых задач с помощью веб-заданий в службе приложений Azure.
Вы можете выбрать разработку веб-задания, которое выполняется как приложение .NET Core или приложение .NET Framework. Версия 3.x пакета SDK Azure для веб-заданий позволяет разрабатывать веб-задания, которые выполняются как приложения .NET Core или приложения .NET Framework, в то время как версия 2.x поддерживает только .NET Framework. Способ развертывания проекта WebJobs для проектов .NET Core отличается от способа развертывания для проектов .NET Framework.
Вы можете опубликовать несколько веб-заданий в одном веб-приложении при условии, что каждое веб-задание в веб-приложении имеет уникальное имя.
Веб-задания как консольные приложения .NET Core
С помощью пакета SDK для веб-заданий Azure версии 3.x можно создавать и публиковать веб-задания в виде консольных приложений .NET Core. Пошаговые инструкции по созданию и публикации консольного приложения .NET Core в Azure в виде веб-задания см. в статье Начало работы с пакетом SDK Azure WebJobs для фоновой обработки, управляемой событиями.
Замечание
Веб-приложения .NET Core и (или) веб-задания .NET Core не могут быть связаны с веб-проектами. Если вам нужно развернуть веб-задание с помощью веб-приложения, создайте веб-задания как консольное приложение .NET Framework.
Развертывание в Службе приложений Azure
При публикации веб-задания .NET Core в службу приложений Azure из Visual Studio используются те же инструменты, что и при публикации приложения ASP.NET Core.
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.
В диалоговом окне Публикация выберите Azure в качестве параметра Целевой объект, а затем нажмите Далее.
Выберите Веб-задания Azure в качестве параметра Указанный целевой объект, а затем нажмите Далее.
Над элементом App Service instances (Экземпляры Службы приложений) нажмите кнопку со знаком плюс (+), чтобы открыть окно Create a new Azure WebJob (Создание веб-задания Azure).
В диалоговом окне Служба приложений (Windows) задайте параметры размещения, которые указаны в следующей таблице.
Настройки Рекомендуемое значение Описание Имя Глобально уникальное имя Имя, которое однозначно идентифицирует ваше новое функциональное приложение. Подписка Выбор подписки Используемая подписка Azure. Группа ресурсов мояГруппаРесурсов Имя группы ресурсов, в которой создается приложение-функция. Выберите "Создать" , чтобы создать новую группу ресурсов. План размещения План службы приложений План службы приложений указывает расположение, размер и функции фермы веб-серверов, в которой размещается приложение. Вы можете сэкономить средства при размещении нескольких приложений, настроив совместное использование одного плана службы приложений в веб-приложениях. Планы службы приложений определяют регион, размер экземпляра, степень масштабирования и SKU ("Бесплатный", "Общий", "Базовый", "Стандартный" или "Премиум"). Выберите Создать, чтобы создать новый план службы приложений Уровни "Бесплатный" и "Базовый" не поддерживают функцию Always On, чтобы обеспечить непрерывную работу сайта. Выберите Создать, чтобы создать веб-задание и связанные с ним ресурсы в Azure с заданными параметрами, а также развернуть код проекта.
Чтобы вернуться на страницу Публикация, выберите Готово.
Веб-задания как консольные приложения .NET Framework
Если вы используете Visual Studio для развертывания проекта консольного приложения .NET Framework с поддержкой веб-заданий, он копирует файлы среды выполнения в соответствующую папку в веб-приложении (App_Data/jobs/continuous для непрерывных веб-заданий и App_Data/jobs/triggered для запланированных веб-заданий или заданий по запросу).
Visual Studio добавляет следующие элементы в проект с поддержкой WebJobs:
- Пакет NuGet Microsoft.Web.WebJobs.Publish .
- Файл webjob-publish-settings.json , содержащий параметры развертывания и планировщика.
Эти элементы можно добавить в существующий проект консольного приложения или использовать шаблон для создания нового проекта консольного приложения с поддержкой WebJobs.
Разверните проект как отдельное веб-задание или свяжите его с веб-проектом, чтобы оно автоматически развертывалось при развертывании веб-проекта. Чтобы связать проекты, Visual Studio включает имя проекта с поддержкой WebJobs в файл webjobs-list.json в веб-проекте.
Предпосылки
Установите Visual Studio 2022 с рабочей нагрузкой разработки Azure.
Включение развертывания веб-заданий для существующего проекта консольного приложения
У вас есть два варианта:
Включите автоматическое развертывание с помощью веб-проекта.
Настройте существующий проект консольного приложения таким образом, чтобы он автоматически развертывался как веб-задание при развертывании веб-проекта. Используйте этот параметр, если вы хотите запустить веб-задание в том же веб-приложении, в котором вы запускаете связанное веб-приложение.
Обеспечьте развертывание без веб-проекта.
Настройте существующий проект консольного приложения для развертывания в виде веб-задания без привязки к веб-проекту. Используйте этот вариант, если вы хотите запустить веб-задание в веб-приложении отдельно, не выполняя веб-приложение в веб-приложении. Это может потребоваться для масштабирования ресурсов WebJob независимо от ресурсов веб-приложения.
Включение автоматического развертывания веб-заданий с веб-проектом
Щелкните правой кнопкой мыши веб-проект в обозревателе решений и выберите Добавить>существующий проект как Azure WebJob.
Появится диалоговое окно Добавить веб-задание Azure .
В раскрывающемся списке Имя проекта выберите проект консольного приложения, который нужно добавить в качестве веб-задания.
Заполните диалоговое окно Добавление веб-задания Azure и нажмите кнопку ОК.
Возможность развертывания WebJobs без веб-проекта
Щелкните правой кнопкой мыши проект консольного приложения в обозревателе решений и выберите Опубликовать как Azure WebJob.
Появится диалоговое окно Добавить веб-задание Azure с выбранным проектом в поле Имя проекта .
Заполните диалоговое окно Добавление веб-задания Azure и нажмите кнопку ОК.
Появится мастер публикации в Интернете . Если вы не хотите публиковать сразу, закройте мастер. Введенные параметры сохраняются на тот случай, если вы захотите развернуть проект.
Создание нового проекта с поддержкой WebJobs
Чтобы создать новый проект с поддержкой WebJobs, используйте шаблон проекта консольного приложения и включите развертывание WebJobs, как описано в предыдущем разделе. В качестве альтернативы вы можете использовать шаблон нового проекта WebJobs:
Использование шаблона нового проекта WebJobs для независимого WebJob
Создайте проект и настройте его для самостоятельного развертывания в виде веб-задания, без привязки к веб-проекту. Используйте этот вариант, если вы хотите запустить веб-задание в веб-приложении отдельно, не выполняя веб-приложение в веб-приложении. Это может потребоваться для масштабирования ресурсов WebJob независимо от ресурсов веб-приложения.
Использование шаблона нового проекта WebJobs для WebJob, связанного с веб-проектом
Создайте проект, который настроен на автоматическое развертывание в качестве веб-задания при развертывании веб-проекта в том же решении. Используйте этот параметр, если вы хотите запустить веб-задание в том же веб-приложении, в котором вы запускаете связанное веб-приложение.
Замечание
Шаблон нового проекта WebJobs автоматически устанавливает пакеты NuGet и включает код в Program.cs для пакета SDK для WebJobs. Если вы не хотите использовать пакет SDK для WebJobs, удалите или измените host.RunAndBlock
инструкцию в Program.cs.
Использование шаблона нового проекта WebJobs для независимого WebJob
Выберите Файл>Создать>Проект. В диалоговом окне Создание нового проекта найдите и выберите Azure WebJob (.NET Framework) для C#.
Следуйте приведенным выше инструкциям, чтобы сделать проект консольного приложения независимым проектом WebJobs.
Использование шаблона нового проекта WebJobs для WebJob, связанного с веб-проектом
Щелкните правой кнопкой мыши веб-проект в обозревателе решений и выберите Добавить>новый проект Azure WebJob.
Появится диалоговое окно Добавить веб-задание Azure .
Заполните диалоговое окно Добавление веб-задания Azure и нажмите кнопку ОК.
webjob-publish-settings.json файл
При настройке консольного приложения для развертывания WebJobs Visual Studio устанавливает пакет NuGet Microsoft.Web.WebJobs.Publish и сохраняет сведения о планировании в файле webjob-publish-settings.json в папке "Свойства " проекта WebJobs. Вот пример этого файла:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
Вы можете редактировать этот файл напрямую, а Visual Studio предоставляет IntelliSense. Схема файла хранится по адресу https://schemastore.org и может быть просмотрена там.
webjobs-list.json файл
При связывании проекта с поддержкой WebJobs с веб-проектом Visual Studio сохраняет имя проекта WebJobs в файле webjobs-list.json в папке "Свойства " веб-проекта. Список может содержать несколько проектов WebJob, как показано в следующем примере:
{
"$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
"WebJobs": [
{
"filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
},
{
"filePath": "../WebJob1/WebJob1.csproj"
}
]
}
Вы можете редактировать этот файл непосредственно в Visual Studio с помощью IntelliSense. Схема файла хранится в папке https://schemastore.org.
Развертывание проекта WebJobs
Проект WebJobs, связанный с веб-проектом, автоматически развертывается вместе с веб-проектом. Сведения о развертывании веб-проекта см. в разделе Практические руководства> поразвертыванию приложения на панели навигации слева.
Чтобы развернуть проект WebJob самостоятельно, щелкните его правой кнопкой мыши в обозревателе решений и выберите Опубликовать как Azure WebJob.
Для независимого веб-задания отображается тот же мастер публикации веб-страниц , который используется для веб-проектов, но с меньшим количеством параметров, доступных для изменения.
Диалоговое окно "Добавление веб-задания Azure"
В диалоговом окне Добавить веб-задание Azure можно ввести имя веб-задания и параметр режима выполнения для веб-задания.
Некоторые поля в этом диалоговом окне соответствуют полям в диалоговом окне Добавить веб-задание на портале Azure. Дополнительные сведения см. в статье Выполнение фоновых задач с помощью веб-заданий в Службе приложений Azure.
Информация о развертывании WebJob:
Сведения о развертывании из командной строки см. в статье Включение командной строки или непрерывной доставки веб-заданий Azure.
Если вы развернули веб-задание, а затем решили изменить тип веб-задания и выполнить повторное развертывание, удалите файл webjobs-publish-settings.json . Это приведет к тому, что Visual Studio повторно отобразит параметры публикации, чтобы вы могли изменить тип веб-задания.
Если вы развертываете веб-задание, а затем меняете режим выполнения с непрерывного на непрерывный или наоборот, Visual Studio создает новое веб-задание в Azure при повторном развертывании. Если вы измените другие параметры планирования, но оставите режим выполнения прежним или переключитесь между режимами "Запланировано" и "По запросу", Visual Studio обновит существующее задание, а не создаст новое.
Типы веб-заданий
Тип веб-задания может быть либо запущенным, либо непрерывным:
Активировано (по умолчанию): запускаемое веб-задание запускается на основе события привязки, по расписанию или при его активации вручную (по требованию). Он выполняется на одном экземпляре, на котором работает веб-приложение.
Непрерывный: непрерывное WebJob запускается сразу после его создания. По умолчанию он работает на всех масштабируемых экземплярах веб-приложений, но его можно настроить для запуска как одного экземпляра с помощью settings.job.
Замечание
Время ожидания веб-приложения может истечь через 20 минут бездействия, и только запросы к реальному веб-приложению могут сбросить таймер. Просмотр конфигурации приложения на портале Azure или запросы на сайт расширенных средств не сбрасывают таймер. Если вы настраиваете веб-приложение, которое выполняет задание непрерывно, по расписанию или с использованием триггеров, основанных на событиях, включите настройку Always on в разделе Конфигурация вашего веб-приложения в Azure. Параметр Always on помогает убедиться, что эти типы WebJobs выполняются надежно. Эта функция доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".
Планирование инициированного веб-задания
При публикации консольного приложения в Azure Visual Studio по умолчанию задает тип WebJob как Triggered и добавляет в проект новый файл settings.job . Для активированных типов веб-заданий этот файл можно использовать для установки расписания выполнения веб-задания.
Используйте файл settings.job для установки расписания выполнения веб-задания. Следующий пример выполняется каждый час с 9 утра до 5 вечера:
{
"schedule": "0 0 9-17 * * *"
}
Этот файл находится в корне папки WebJobs вместе со сценарием WebJob, например wwwroot\app_data\jobs\triggered\{job name}
или wwwroot\app_data\jobs\continuous\{job name}
. При развертывании веб-задания из Visual Studio отметьте свойства файла settings.job в Visual Studio как Копировать, если они более новые.
Если вы создаете веб-задание на портале Azure, файл settings.job будет создан автоматически.
Выражения CRON
WebJobs использует те же выражения CRON для планирования, что и триггер таймера в Функциях Azure. Дополнительные сведения о поддержке CRON см. в статье Триггер таймера для Функций Azure.
Замечание
Часовой пояс по умолчанию, используемый для запуска выражений CRON, — Всемирное координированное время (UTC). Если нужно использовать выражение CRON в соответствии с другим часовым поясом, создайте для вашего приложения-функции настройку приложения с именем WEBSITE_TIME_ZONE. Чтобы узнать больше, см. сведения о часовых поясах NCRONTAB.
settings.ссылка на работу
WebJobs поддерживает следующие настройки:
Настройки | Тип | Описание |
---|---|---|
is_in_place |
Все | Позволяет веб-заданию выполняться на месте без предварительного копирования во временную папку. Дополнительные сведения см. в рабочем каталоге WebJob. |
is_singleton |
Непрерывный | Выполняйте веб-задание только на одном экземпляре при горизонтальном масштабировании. Дополнительные сведения см. в разделе Установка непрерывного задания в качестве одноэлементного. |
schedule |
Активировано | Запустите веб-задание по расписанию на основе CRON. Дополнительные сведения см. в разделе Выражения NCRONTAB. |
stopping_wait_time |
Все | Позволяет управлять поведением выключения. Дополнительную информацию см. в разделе Корректное завершение работы. |
Непрерывное выполнение
Если вы включите функцию Always On в Azure, вы можете использовать Visual Studio для изменения непрерывного выполнения веб-задания:
Если вы еще этого не сделали, опубликуйте проект в Azure.
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.
В разделе Настройки выберите Показать все настройки.
В диалоговом окне Параметры профиля выберите Непрерывно для параметра Тип веб-задания, а затем нажмите кнопку Сохранить.
Выберите «Опубликовать» на вкладке «Опубликовать», чтобы повторно опубликовать веб-задание с обновленными настройками.